如何解析日期字符串从数据库没有时间移位

How to parse date string from database without time shift?

本文关键字:没有时间 数据库 何解析 日期 字符串      更新时间:2023-09-26

我从数据库中获得2016-07-13T00:00:00.000Z字符串,并将其转换为MM/DD/YYYY格式与moment.js像这样:

result = moment('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');

打印07/12/2016,但我期待07/13/2016。Linux本地时区为America/New_York。date命令打印Mon Jul 4 04:28:19 EDT 2016

您拥有的日期是UTC,由末尾的z表示。

当您使用默认的时刻构造函数moment()时,它将您传递给它的时间从指定的偏移量(在本例中为UTC)转换为机器的本地时间。这就是为什么你的约会改变了。因为这是一个UTC日期,为了保持它完全相同,你可以使用moment.utc():

moment.utc('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
"07/13/2016"

或者,parseZone也可以工作:

moment.parseZone('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
"07/13/2016"

有关当前所有构造函数的更多信息,请参阅解析指南或者这篇博文

您应该使用momentjs时区:http://momentjs.com/timezone/

yourdate = moment.tz("2016-07-13T00:00:00.000Z", "America/New_York");
alert(yourdate.format('MM/DD/YYYY'));

这将在输出中给出正确的日期。