Moment.js和Unix Epoch转换

时间:2013-08-02 17:10:51

标签: javascript date epoch momentjs

我有一个以下列字符串返回日期的Web服务:

/Date(1377907200000)/

我使用MomentJS将其解析为moment对象。

moment("/Date(1377907200000)/") => Fri Aug 30 2013 20:00:00 GMT-0400

所有这一切都很好。但是当我在对象上调用unix()时,我会得到值1377907200。但是,这与Fri Jan 16 1970 17:45:07 GMT-0500相对应。我可以将unix()返回的值相乘,但这对我来说似乎很草率。我怀疑通过调用unix()我正在做的事情并不完全是我认为的。调用unix()时是否需要指定某种格式?我在这里缺少什么?

JSFidle showing the conversion to moment and then back.

3 个答案:

答案 0 :(得分:49)

meagar提供的答案是正确的,从严格的JavaScript / Unix时间角度来看。但是,如果只乘以1000,则会丢失数据中可能存在的任何亚秒级精度。

Moment.js提供了两种不同的方法,如in the docs所述。 .unix()以秒为单位返回值。它实际上除以1000并截断任何小数。您希望使用.valueOf()方法,该方法只返回毫秒而不进行修改。

答案 1 :(得分:10)

在JavaScript版本中,当您将Date转换为整数时,自unix世纪以来,您将获得毫秒秒。传统的Unix时间是自纪元以来的数量。乘以1000是正确的选择。

答案 2 :(得分:0)

此解决方案帮助我使用 moment.js 将格式添加到纪元日期。

moment(1377907200000).format("DD MMM YYYY hh:mm A")