繁体   English   中英

java.time.即时响应 JavaScript 日期

[英]java.time.Instant response to JavaScript date

我有一个 Spring 引导服务器,它返回如下日期:

{
  // Some keys
  pickupDate: {
    epochSecond: 1612199331,
    nano: 428000000
  },
  // Some other keys
}

如何将 object 转换为 JavaScript 日期?

tl;博士

new Date( ( 1_612_199_331 * 1_000 ) + ( 428_000_000 / 1_000_000 ) ) 

Java

如果这些值来自 Java 8 及更高版本的java.time类中的对象,例如Instant ,则:

  • epochSecond表示自 1970 年第一刻的纪元参考以来的整秒计数,如 UTC 所示,1970-01-01T00:00Z。
  • nano将小数秒表示为纳秒计数,即十亿分之一秒。

JavaScript

虽然我不知道 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM