Moment.js和Unix Epoch转换

Rob*_*her 16 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显示转换为时刻然后返回.

Mat*_*int 50

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

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

  • @chovy - 它是任何`moment`对象的方法,例如`moment().valueOf()` (3认同)

mea*_*gar 10

在JavaScript中,当你将一个转换Date为整数时,你会得到自unix时代以来的毫秒数.传统的Unix时间是自纪元以来的秒数.乘以1000是正确的选择.

  • 或者只是'moment("/ Date(1377907200000)/").toDate().getTime()` (3认同)