在moment.js中使用什么日期格式?

时间:2016-06-03 00:39:58

标签: javascript date datetime momentjs

我使用moment.js来获取UTC日期偏移。

我有以下代码,它给了我偏移量,但我收到警告"Deprecation warning: moment construction falls back to js Date"

var s = booking.booking_date_time.toString();
console.log(moment(s).parseZone(s).utcOffset());

上面的s变量设置为"Mon Jun 13 2016 08:00:00 GMT+1000 (AUS Eastern Standard Time)"

我知道要获得警告,我需要及时指定日期格式,但我不确定日期格式应该是什么。我已尝试过这种格式"EEE MMM dd yyyy HH:mm:ss ZZ",但这并不奏效。

2 个答案:

答案 0 :(得分:2)

Moment使用它自己的解析令牌集,与其他库不同。因此,这里有一些错误的令牌。此外,您需要指定GMT在字符串中,但使用[]。

将其转义

总结:

moment('Mon Jun 13 2016 08:00:00 GMT+1000', 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ').format()
"2016-06-12T17:00:00-05:00"

请注意,使用默认矩构造函数进行解析时,它会从指定的偏移量转换为用户的本地时间。

如果要保留固定偏移量,请使用parseZone:

moment.parseZone('Mon Jun 13 2016 08:00:00 GMT+1000', 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ').format()
"2016-06-13T08:00:00+10:00"

编辑:注意评论。如果是约会,请直接传递。我应该注意到这一点。

答案 1 :(得分:1)

doc中所述: -

  

当从字符串创建片刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后如果找不到已知格式则返回到新日期(字符串)。

所以我建议您使用moment(new Date(booking.booking_date_time)),这将有效。 (如果booking.booking_date_time是有效日期对象

另请参考moment-format更改为moment.js

支持的不同格式