Sve*_*sen 4 javascript dst momentjs
我们正在追踪我们的应用程序中看似与moment.js格式相关的错误.
这是有问题的电话(在Chrome,FF和Edge中复制,供参考):
moment('2016-03-13T23:59:59.999-06:00').format('YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)
我们的期望:
2016年3月13日
我们得到了什么:
2016年3月14日
这似乎与夏令时有关,因为这是我们能够重现这个错误行为并且当天DST翻转的唯一日期(到目前为止).
如果我们将UTC偏移切换到-05:00那么它可以正常工作.
这是一个简单的JSBIN来演示
这里发生了什么?我们怎么解决这个问题呢?
如果使用默认矩构造函数,则Moment会将具有偏移量的日期转换为您所在计算机的本地时区.
因此,您的代码按预期工作.日期取自-6并转换为您的本地偏移量.
如果要在指定的时区偏移量中使用日期,请使用moment.parseZone:
moment.parseZone('2016-03-13T23:59:59.999-06:00').format()
"2016-03-13T23:59:59-06:00"
Run Code Online (Sandbox Code Playgroud)
如果要忽略时区偏移量并在本地时间工作,请指定不包含偏移量的格式.通过这样做,您可以忽略偏移量.
moment('2016-03-13T23:59:59.999-06:00', 'YYYY-MM-DDTHH:mm:ss.SSS').format()
"2016-03-13T23:59:59-05:00"
Run Code Online (Sandbox Code Playgroud)
请注意,我是UTC-5,偏移量显示为-5,因为我忽略了日期中的偏移量.
解析指南可能会有所帮助:http: //momentjs.com/guides/#/parsing/
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |