gpt4 book ai didi

javascript - moment.js 时区 .valueOf() 不返回预期值

转载 作者:行者123 更新时间:2023-11-30 08:00:22 24 4
gpt4 key购买 nike

我有一个使用 highcharts-ng 制作折线图的 Angular 应用程序。 y 轴是数字,x 轴是日期时间。

我正在尝试使用 moment.js 在“美国/纽约”和“欧洲/伦敦”这两个时区之间进行转换时正确考虑夏令时的变化。

伦敦目前处于英国夏令时(截至发稿时),所以现在是 +1:00。

tick.TimeStamp
> "2015-04-21T16:06:06.0786392-04:00"

tick.TimeStamp 是我的“美国/纽约”时间(目前在美国东部时间)。我使用...将其转换为伦敦时间

moment(tick.TimeStamp).tz("Europe/London").format()
> "2015-04-21T21:06:06+01:00"

我需要我在 Unix Epoch ticks 中的结果,以便在 highcharts-ng 中为 x 轴绘制它们,所以我使用...

var d = moment(tick.TimeStamp).tz("Europe/London").format()
moment(d).valueOf()

产生

1429646766000

问题是这个刻度值作为日期时间的结果是

Tue, 21 Apr 2015 20:06:06 GMT

它应该在哪里

Tue, 21 Apr 2015 21:06:06 GMT

因为伦敦目前在 BST +1:00

是我做错了什么,还是 moment 只是计算错误?

如有任何帮助,我们将不胜感激。谢谢!

编辑:我应该提到我的 moment-timezones.js 是他们网站上最新的,包含所有时区信息。

最佳答案

Moment 计算正确。

2015 年 4 月 21 日星期二 20:06:06 GMT2015 年 4 月 21 日星期二 21:06:06 BST2015 年 4 月 21 日星期二16:06:06 EDT 都指的是同一时间,并且都具有相同的 unix 时间戳。当您调用 .tz() 时,您只是在更改时间的格式化方式。您没有更改实际时间。

注意:要获取 unix 时间戳,您可以使用 .unix() 例如

moment(tick.TimeStamp).unix()

或者这将返回相同的值

moment(tick.TimeStamp).tz("Europe/London").unix()

关于javascript - moment.js 时区 .valueOf() 不返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com