从日期字符串创建JavaScript日期对象+;时间字符串+;时区偏移字符串
我总共有4种不同的输入,即:从日期字符串创建JavaScript日期对象+;时间字符串+;时区偏移字符串,javascript,datetime,timestamp,momentjs,Javascript,Datetime,Timestamp,Momentjs,我总共有4种不同的输入,即: 日期字符串(2020-05-05) 时间字符串(15:30) 时区偏移(-09:00) 我想把这些字符串组合成一个datetime对象,比如(2020-05-05T15:30:00-09:00),不管我的本地浏览器时区是什么。问题是,当我组合这些字符串并尝试使用new date()函数创建date对象时,我的datetime会转换为UTC时间戳 我试过这个: const date = moment(this.actualDateOfSurgeryDate).fo
const date =
moment(this.actualDateOfSurgeryDate).format(YYYYMMDD) +
'T' +
moment(this.actualDateOfSurgeryTimeDropDown + ' ' + this.actualDateOfSurgeryTimeAM_PMDropDown, ['h:mm A']).format('HH:mm:ss') +
offsetTime;
this.caseDetail.actualDateOfSurgery = new Date(date);
这给了我类似于:2020-05-05T04:30:00.000Z的输出
如何获得所需的输出:2020-05-05T15:30:00-09:00??
由于DST,我的项目中有时刻js可用
3月之前或10月之后的日期为15:30
let dateString=“2020-05-05”+“T”+“15:30”+“:00”+“-09:00”
console.log(日期字符串)
const date=新日期(日期字符串)
console.log(日期)
const Anchorage=date.tolocalesting('en-US',{时区:'America/Anchorage',hour12:false})
控制台日志(锚地)
让选项={}
选项。时区=‘美国/安克雷奇’;
options.timeZoneName='short';
log(date.toLocaleDateString('en-US')、date.toLocaleTimeString('en-US',options))代码>由于DST,我得到16:30
3月之前或10月之后的日期为15:30
let dateString=“2020-05-05”+“T”+“15:30”+“:00”+“-09:00”
console.log(日期字符串)
const date=新日期(日期字符串)
console.log(日期)
const Anchorage=date.tolocalesting('en-US',{时区:'America/Anchorage',hour12:false})
控制台日志(锚地)
让选项={}
选项。时区=‘美国/安克雷奇’;
options.timeZoneName='short';
log(date.toLocaleDateString('en-US')、date.toLocaleTimeString('en-US',options))代码>
我想将这些字符串组合成一个datetime对象,如(2020-05-05T15:30:00-09:00)
日期对象非常简单,它们只是一个时间值,自1970-01-01T00:00:00Z以来以毫秒为单位的偏移量,因此本质上是UTC。内置解析器不可靠,并且缺少任何功能,例如格式化标记
因此,如果有单独的值,如:
- 日期字符串(2020-05-05)
- 时间字符串(15:30)
- 时区偏移(-09:00)
然后,您可以创建一个符合格式的字符串,该字符串应该由内置解析器正确解析,例如
new Date('2020-05-05T15:30:00.000-09:00')
然而,由于实现的不同,一般建议避免使用内置解析器。此外,格式必须精确(例如,时间戳中包含秒和毫秒,偏移量中包含冒号(:),否则某些实现会将其视为格式错误而拒绝,并返回无效日期
一旦有了日期对象,获取带有偏移量的“本地”时间戳就是一个格式化问题,这在以前已经被回答了很多次(例如)。没有任何像样的内置格式函数(在某些情况下可以,但通常缺乏功能),因此您必须要么使用,要么使用库
下面的示例使用,建议作为moment.js的升级路径
对于Luxon,如果您指定一个代表性位置,您将获得该位置在该日期日期和时间的偏移量。或者,您可以将偏移量固定为设定值,实质上是为没有代表性位置的时区设置偏移量,这样它就不会引用夏令时或历史偏移量更改:
let DateTime=luxon.DateTime;
//按指定位置的偏移量
设d0=DateTime.fromISO('2020-01-01',{zone:'America/Yakutat'});
设d1=DateTime.fromISO('2020-06-30',{zone:'America/Yakutat'});
console.log(d0.toString());
console.log(d1.toString());
//每个提供的字符串的固定偏移量
设d2=DateTime.fromISO('2020-05-05T15:30:00.000-09:00',{setZone:true});
设d3=DateTime.fromISO('2020-01-01T15:30:00.000-09:00',{setZone:true});
console.log(d2.toString());
log(d3.toString());
我想将这些字符串组合成一个datetime对象,如(2020-05-05T15:30:00-09:00)
日期对象非常简单,它们只是一个时间值,自1970-01-01T00:00:00Z以来以毫秒为单位的偏移量,因此本质上是UTC。内置解析器不可靠,并且缺少任何功能,例如格式化标记
因此,如果有单独的值,如:
- 日期字符串(2020-05-05)
- 时间字符串(15:30)
- 时区偏移(-09:00)
然后,您可以创建一个符合格式的字符串,该字符串应该由内置解析器正确解析,例如
new Date('2020-05-05T15:30:00.000-09:00')
然而,由于实现的不同,一般建议避免使用内置解析器。此外,格式必须精确(例如,时间戳中包含秒和毫秒,偏移量中包含冒号(:),否则某些实现会将其视为格式错误而拒绝,并返回无效日期
一旦有了日期对象,获取带有偏移量的“本地”时间戳就是一个格式化问题,这在以前已经被回答了很多次(例如)。没有任何像样的内置格式函数(在某些情况下可以,但通常缺乏功能),因此您必须要么使用,要么使用库
下面的示例使用,建议作为moment.js的升级路径
对于Luxon,如果您指定一个代表性位置,您将获得该位置在该日期日期和时间的偏移量。或者,您可以将偏移量固定为设定值,实质上是为没有代表性位置的时区设置偏移量,这样它就不会引用夏令时或历史偏移量更改:
let DateTime=luxon.DateTime;
//按指定位置的偏移量
设d0=DateTime.fromISO('2020-01-01',{zone:'America/Yakutat'});
设d1=DateTime.fromISO('2020-06-30',{zone:'America/Yakutat'});
console.log(d0.toString());
console.log(d1.toString());
//