我遇到了同时使用Moment.js一些怪异的行为背后显示。我有一些助手类附加到日期原型,这显然是导致每个日期显示在一天后面。日期由
Date.prototype.format = function(){
return moment(this).format('MM/DD/YYYY')
}
var date = new Date('2008-05-13T00:00:00')
date.format() // => 05/12/2008, but should be 05/13/2008
其他几个奇怪的事情,我注意到:
date.getDate() // => yields 12, but should be 13
但是,如果我直接与UTC字符串实例化的时刻对象,那么它的工作原理:
moment('2008-05-13T00:00:00').format('MM/DD/YY') // => 05/13/08
但是我正在处理普通的日期对象,并且将每个日期修改为Moment对象并不是我最喜欢的想法。我已经尝试修改format
函数从日期提取UTC字符串,看看它是否显示正确,但无济于事。
date.toUTCString() // => Correctly yields "Tue, 13 May 2008 00:00:00 GMT"
moment(date.toUTCString()).format('MM/DD/YY') // => still 05/12/08
任何想法发生了什么?日期构造函数有问题吗?
编辑:输出时间以及:
moment(date).format('MM/DD/YY hh:mm:ss') // => "05/12/08 08:00:00"
同样输出h:m:s,你可能会发现它们出了一定的小时数,这意味着它是一个时区问题。 – 2014-10-27 18:28:20