我使用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"
,但这并不奏效。
答案 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