Moment: startOf('day') 昨天给了我

创建于 2016-04-03  ·  3评论  ·  资料来源: moment/moment

在 Chrome 版本 49.0.2623.110 m 中运行以下代码
image
也许与#2982有关?

最有用的评论

因为您使用moment()函数来构造日期,所以 moment 假定您正在处理本地日期。 因此, .startOf()函数将您移动到本地日期的开头。
但是, .toISOString()会输出 UTC 日期,如字符串末尾的 Z 所示。

根据您的 github 个人资料,您似乎在以色列。 因此,调整亚洲/耶路撒冷时区并将其全部放入代码中:

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

您要么需要完全在本地时间工作,然后使用.format()来获得你想要的结果,要么完全在 UTC 工作。

文档的这一部分可能会有所帮助:
http://momentjs.com/guides/#/parsing/local -utc-zone/

所有3条评论

因为您使用moment()函数来构造日期,所以 moment 假定您正在处理本地日期。 因此, .startOf()函数将您移动到本地日期的开头。
但是, .toISOString()会输出 UTC 日期,如字符串末尾的 Z 所示。

根据您的 github 个人资料,您似乎在以色列。 因此,调整亚洲/耶路撒冷时区并将其全部放入代码中:

//the time now in Jerusalem
moment().format()
"2016-04-03T14:48:10+03:00"

//start of day in Jersualem
moment().startOf('day').format()
"2016-04-03T00:00:00+03:00"

//start of day as ISO string is three hours before start of day in Jerusalem
moment().startOf('day').toISOString()
"2016-04-02T21:00:00.000Z"

您要么需要完全在本地时间工作,然后使用.format()来获得你想要的结果,要么完全在 UTC 工作。

文档的这一部分可能会有所帮助:
http://momentjs.com/guides/#/parsing/local -utc-zone/

:掌心:

感谢您的详尽解释。

我想我这周从这里到 Stack Overflow 之间实际上已经解释了至少两次。 你不是唯一一个感到困惑的人。 我将更新文档以使 UTC 部分更加清晰。

此页面是否有帮助?
0 / 5 - 0 等级