记 moment 格式化踩过的坑
moment不同时区时间格式化
最近做项目被测试发现了一个坑,新建的数据点击编辑不做任何修改之后点击保存,几次之后日期会变得越来越小,真是匪夷所思。排查后发现,接口每次返回的时间和保存的时间是一致的,但是保存的时候再传给接口被moment格式化之后的时间,莫名其妙就变小了。经过排查,原来是moment格式化的时候是按照国际时区格式化的,但是我用的是北京时间保存的,北京时间相对于国际时区要加8个小时的时差。所以每次保存调接口的时候都会少8个小时,保存三次就少了一天~。
这里被格式化后的时间格式是这个样子的:
2019-12-24T16:00:00.000Z
Z代表着0时区,和北京时区相差8个小时,所以每次格式化完后的时间实际上是0时区时间,被减少了8小时。如果后台接收的时候没有相应的时区转化,下次获取的时间是被格式化成0时区的时间直接转化成的毫秒数。
解决方法是转化成北京时间再储存,或者更直接的方法就是调用moment对象的format方法格式化成字符串形式的日期,再传给后台。