在 Chrome 版本 49.0.2623.110 m 中运行以下代码
也许与#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/
:掌心:
感谢您的详尽解释。
我想我这周从这里到 Stack Overflow 之间实际上已经解释了至少两次。 你不是唯一一个感到困惑的人。 我将更新文档以使 UTC 部分更加清晰。
最有用的评论
因为您使用
moment()
函数来构造日期,所以 moment 假定您正在处理本地日期。 因此,.startOf()
函数将您移动到本地日期的开头。但是,
.toISOString()
会输出 UTC 日期,如字符串末尾的 Z 所示。根据您的 github 个人资料,您似乎在以色列。 因此,调整亚洲/耶路撒冷时区并将其全部放入代码中:
您要么需要完全在本地时间工作,然后使用
.format()
来获得你想要的结果,要么完全在 UTC 工作。文档的这一部分可能会有所帮助:
http://momentjs.com/guides/#/parsing/local -utc-zone/