.Net Ticks to ISO 8601 Date format using JavaScript

.Net Ticks to ISO 8601 Date format using JavaScript

我正在 MongoDB 中保存 DateTimeOffset 对象。 Mongo 驱动程序将 DateTimeOffset 序列化如下。

[635519027206007023,0]

我需要将它转换成ISO 8601格式如下。

2015-02-02T01:43:19+05:00

使用 .NET DateTimeOffset class 的帮助可以轻松完成转换。但是,在这种情况下,我使用 JavaScript (Node.js) 直接从 MongoDB 检索 DateTimeOffset。因此我最终检索了长数组。

如何使用 JavaScript 将长数组 [635519027206007023,0] 转换为 ISO 8601 格式 2015-02-02T01:43:19+00:00

DateTimeOffset 类型的纪元是 0000-01-01,而 Javascript 日期的纪元是 1970-01-01。

日期 1970-01-01 的 DateTimeOffset 刻度值为 621355968000000000,因此您只需从该值中减去该值即可将其转换为 Javascript 纪元。

DateTimeOffset 中的刻度为 1/10000000 秒,而 Javascript 日期中的刻度为 1/1000 秒,因此将值除以 10000 将其转换为 Javascript 日期刻度.

因此,要从 DateTimeOffset 刻度中获取 Javascript 日期:

new Date((date[0] - 621355968000000000) / 10000)

然后您可以使用 toISOString method 将日期转换为 ISO8601 字符串。