我有一个以下列字符串返回日期的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()
时是否需要指定某种格式?我在这里缺少什么?
答案 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")