为什么stringify'd moment.js日期在解析时返回不同的值

时间:2013-05-20 16:53:27

标签: javascript utc momentjs

我想要存储在本地存储空间中,并使用isBefore()进行比较。

当我将此时刻it converts it字符串化为ISO8601格式时,很好。然而,当我尝试通过将它变成新的时刻来重新发挥它的作用时,它具有不同的值。小时被时区转换所抵消。

它是这样的:

moment().hour(); = 21

JSON.stringify(moment()); =“2013-05-20T21:38:31.819Z”`

moment("2013-05-20T21:38:31.819Z").hour(); = 22

显然这里的问题与ISO8601采用UTC格式有关,但无论我如何尝试使用utc()函数,它都不会改变下面的基本值不同的事实。

如何将一个时刻字符串化,然后再次使用剩余的值解析它?

1 个答案:

答案 0 :(得分:0)

我对此的解决方法是强制转换字符串时不使用utc。因此,foobar是本地存储中的对象,如果:

foobar.expires = 2013-05-22T15:30:23.834Z

然后声明:

moment(foobar.expires, "YYYY-MM-DDTHH:MM:SS.SSS")

存储在本地存储中时,

将返回最初字符串化的同一时刻。

凌乱的黑客虽然。