首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日期转换为本地日期时间

问将日期转换为本地日期时间
EN

Stack Overflow用户
提问于 2018-10-04 11:20:51
回答 2查看 630关注 0票数 0

我有UTC日期变量:

代码语言:javascript
复制
let d = '/Date(1538560800000+0200)/';

我试着把它转换到我的当地时间,但没有成功:

代码语言:javascript
复制
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。怎样才是正确的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-05 18:34:35

在创建字符串时,我们首先检查字符串是否与已知的ISO 8601格式相匹配,然后检查该字符串是否与RFC 2822日期时间格式相匹配,如果没有找到已知格式,则将其放到新日期( string )的回退位置。

矩可接受字符串参数的ISO 8601和RFC 2822格式,您的输入/Date(1538560800000+0200)/也不是。不过,当您将其传递给moment时,它会尝试将其转换为字符串,并最终提取可能的时间戳参数,即1538560800000。在下面的代码中可以看到这一点,因为两者最终都是相同的值。

代码语言:javascript
复制
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

1538560800000转换为格林尼治时间是10月3日上午10:00 GMT+0000,因此输出以下代码。

代码语言:javascript
复制
moment.utc(d).toString() // Wed Oct 03 2018 10:00:00 GMT+0000

因此,在任何情况下,您都不会得到14:00的时间,因为这个时间戳并不代表这个时间。而时间戳总是绝对的(在格林尼治时间),有no such thing as a local timestamp。

我觉得这里的空白是你的错误解释输入字符串的,你在想..

  • 将1538560800000转换为本地日期时间,即10月3日12:00(本地)
  • 加上+0200小时,这意味着把它转到10月3日,14:00

但是,正确的阅读方式是..。

  • 将1538560800000转换为日期时间,即10月3日10:00(绝对/格林尼治时间)
  • +0200表示源的时区,即GMT+0200。

同样,第一种解释是错误的,因为上面提到的原因-- unix时间戳总是在GMT中,它们从来不在本地时区。

票数 1
EN

Stack Overflow用户

发布于 2018-10-04 11:28:36

我也创建了jsfiddle:http://jsfiddle.net/csinghal/dp7rzmw5/34811/

所有格式的代码与以下代码相同:

代码语言:javascript
复制
 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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52645437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档