为什么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');