Javascript 将日期转换为本地日期时间
我有UTC日期变量:Javascript 将日期转换为本地日期时间,javascript,momentjs,Javascript,Momentjs,我有UTC日期变量: let d = '/Date(1538560800000+0200)/'; 我试图将其转换为本地时间,但没有成功: moment(accessGroup.TimeOn).toDate() // result: Wed Oct 03 2018 12:00:00 GMT+0200 (Central European Summer Time) moment(d).local().format("DD-MM-YYYY hh-mm-ss"); // result: "03-10-2
let d = '/Date(1538560800000+0200)/';
我试图将其转换为本地时间,但没有成功:
moment(accessGroup.TimeOn).toDate() // result: Wed Oct 03 2018 12:00:00 GMT+0200 (Central European Summer Time)
moment(d).local().format("DD-MM-YYYY hh-mm-ss"); // result: "03-10-2018 12-00-00"
moment.utc(d).local().format("DD-MM-YYYY hh-mm-ss"); // result: "03-10-2018 12-00-00"
我想知道当地时间14:00:00。正确的方法是什么?我还创建了JSFIDLE: 所有格式的代码如下所示:
var localDate = new Date(1538560800000+0200);
var utcFormat = moment(localDate).utc().format('YYYY-MM-DD HH:MM:SS');
var localFormat = moment.utc(utcFormat, 'YYYY-MM-DD
HH:MM:SS').local().format('MM/DD/YYYY hh:mm a');
console.log('LocalDate: ', localDate);
console.log('utcFormat: ', utcFormat);
console.log('localFormat: ', localFormat);
从字符串创建力矩时,我们首先检查字符串
匹配已知的ISO 8601格式,然后检查字符串是否匹配
RFC 2822日期-时间格式,然后再返回到新的
未找到已知格式时的日期(字符串)
矩接受ISO 8601和RFC 2822格式的字符串参数,您的输入/Date(153856080000+0200)/
两者都不是。但是,当您将其传递给矩
时,它会尝试将其转换为字符串,并最终提取可能的时间戳参数,即153856080000
。这可以在下面的代码中看到,因为两者最终都是相同的值
let d = '/Date(1538560800000+0200)/'
moment(d).toString() // Wed Oct 03 2018 12:00:00 GMT+0200
moment(1538560800000).toString() // Wed Oct 03 2018 12:00:00 GMT+0200
153856080000
转换为GMT时为2018年10月3日星期三10:00:00 GMT+0000,因此输出以下代码
moment.utc(d).toString() // Wed Oct 03 2018 10:00:00 GMT+0000
所以,在任何情况下,你都不会得到14:00:00的时间,因为这个时间戳并不代表这一点。时间戳总是绝对的(以格林尼治标准时间为单位),有
我觉得这里的差距是你对输入字符串的错误解释,你在想
- 将
转换为本地日期时间,即10月3日12:00:00(本地)153856080000
- 添加
小时,这意味着将其改为10月3日14:00:00+0200
- 将
转换为日期时间,即10月3日10:00:00(绝对值/GMT)153856080000
表示源的时区,即+0200
GMT+0200
同样,由于上述原因,第一种解释是错误的-unix时间戳总是以GMT为单位,它们从不在本地时区。例如,这是可行的,但如何为我的UTC时间/Date(153856080000+0200)/“不,我得到的结果是:'10/03/2018 12:00 pm',我应该得到'14:00'因为'/Date(153856080000+0200)/'是UTC时间。您所在的时区是什么?目前我所在的时区与UTC相比为+2小时。因此,我需要查看14:00。谢谢,主要问题是日期格式,我从服务器获得:)