17

我有一个 Web 服务将日期作为以下字符串返回:

/Date(1377907200000)/

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

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

这一切都很好。但是当我调用unix()对象时,我得到了 value 1377907200。然而,这对应于Fri Jan 16 1970 17:45:07 GMT-0500。我可以乘以返回的值,unix()但这对我来说似乎很草率。我怀疑我通过调用所做的事情unix()并不完全是我想的那样。调用时是否需要指定某种格式unix()?我在这里想念什么?

JSFidle 显示转换为时刻然后返回。

4

3 回答 3

51

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

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

于 2013-08-02T17:55:33.420 回答
10

在 JavaScript 领域,当您将 a 转换Date为整数时,您会得到自 unix 纪元以来的毫秒数。传统的 Unix 时间是自纪元以来的秒数。乘以 1000 是正确的选择。

于 2013-08-02T17:17:35.293 回答
0

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

moment(1377907200000).format("DD MMM YYYY hh:mm A")
于 2021-03-04T12:55:38.883 回答