![](/img/trans.png)
[英]Java Instant.toEpochMilli() & Javascript Date.now() not in sync
[英]java.time.Instant response to JavaScript date
我有一个 Spring 引导服务器,它返回如下日期:
{
// Some keys
pickupDate: {
epochSecond: 1612199331,
nano: 428000000
},
// Some other keys
}
如何将 object 转换为 JavaScript 日期?
new Date( ( 1_612_199_331 * 1_000 ) + ( 428_000_000 / 1_000_000 ) )
如果这些值来自 Java 8 及更高版本的java.time类中的对象,例如Instant
,则:
虽然我不知道 JavaScript,但似乎大多数实现都提供了Date
类型。 Date
表示基于与java.time相同的纪元参考的计数在 UTC 中看到的时刻。
不同之处在于小数秒的粒度。 JavaScript Date
使用毫秒而不是java.time中的纳秒。 因此,您需要将该纳米数除以 1,000,000 才能得到毫秒。
将整秒乘以一千得到毫秒。 并将 nanos 的计数除以一百万以获得毫秒。 求和以获得自纪元参考以来的总毫秒数。 传递给Date
的构造函数。
const d =
new Date(
( 1_612_199_331 * 1_000 )
+
( 428_000_000 / 1_000_000 )
)
;
使用标准ISO 8601格式生成表示存储在该Date
中的时刻的文本。
const d = new Date( ( 1_612_199_331 * 1_000 ) + ( 428_000_000 / 1_000_000 ) ) ;
console.log( d.toISOString() ) ;
2021-02-01T17:08:51.428Z
最后的Z
表示与 UTC 零时分秒的偏移量。 发音为“祖鲁语”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.