我从数据库中获取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,但我期待2016年7月13日。
本地Linux时区是America / New_York。 date
命令打印此Mon Jul 4 04:28:19 EDT 2016
答案 0 :(得分:2)
您所拥有的日期是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"
有关所有构造函数的更多信息,请参阅parsing guide 或this blog post
答案 1 :(得分:0)
你应该使用momentjs时区:http://momentjs.com/timezone/
yourdate = moment.tz("2016-07-13T00:00:00.000Z", "America/New_York");
alert(yourdate.format('MM/DD/YYYY'));
这应该会在输出中给出正确的日期。