MomentJS没有正确转换日期

时间:2016-02-09 22:10:19

标签: javascript angularjs mongodb date momentjs

我从Mongolab获取格式为"2016-02-07T04:11:27.667Z"

的记录

要显示日期,我会将它们转换为MM-DD-YYYY,以使其更具人性化:

obj.converted_date = moment(obj.date).format('MM-DD-YYYY');

出于某种原因,它将2016年2月7日的记录转换为2016年2月6日:

converted_date: "02-06-2016"
date: "2016-02-07T04:11:27.667Z"

为什么会这样?

2 个答案:

答案 0 :(得分:5)

之所以发生这种情况,是因为日期代表“当地时间”而不是“utc”表示存储它们,除非您要求它:

 moment(obj.date).utc().format('MM-DD-YYYY');

因此,差异由您配置的时区调整日期来表示。

请参阅文档中的UTC

答案 1 :(得分:2)

您的时间以UTC表示,因为它的末尾是Z。如果您希望它是当地时间,则应该"2016-02-07T04:11:27.667Z"而不是"2016-02-07T04:11:27.667"

或者,正如Blakes Seven建议的那样,您可以以UTC显示时间,它将显示相同的时间,而不是服务器本地时区的时间偏移量。