为什么Moment.JS不能正确parsing24小时的date

每当我使用moment.js&nodeparsingdate,它应该是12小时。 考虑以下testing:

var moment = require('moment'); var dt1 = moment('14:00, 10 Jun 2014', 'HH:mm, DD MMM YYYY').toDate(); console.log('dt1:' + JSON.stringify(dt1, null, 4)); var dt2 = moment('02:00, 10 Jun 2014', 'HH:mm, DD MMM YYYY').toDate(); console.log('dt2:' + JSON.stringify(dt2, null, 4)); 

它给出了输出:

 dt1:"2014-06-10T02:00:00.000Z" dt2:"2014-06-09T14:00:00.000Z" 

它几乎就像它parsing它使用一些疯狂的时区,而不是只是在我的本地时区parsingdate,我会认为这将是默认的行为。

我怎样才能使它正常工作?

Moment.js工作正常。 你的问题的来源是JSON.stringify转换date为UTC。 所以你需要添加你的时区到时间戳来解决这个问题。 最简单的方法是将你的第一时刻对象转换为第二个对象,以便更改格式,并使用不带参数的格式调用来设置默认格式(在此处查找默认格式)。

 moment(moment('02:00, 10 Jun 2014', 'HH:mm, DD MMM YYYY').toDate()).format(); 

更新:

@MattJohnson认为这更简单。 不知道为什么它没有为我工作,但它只是需要是:

 moment('02:00, 10 Jun 2014', 'HH:mm, DD MMM YYYY').format() 

尝试如下

 var dt1 = moment('14:00, 10 Jun 2014', 'HH:mm, DD MMM YYYY').format('HH:mm, DD MMM YYYY');