WoJ*_*WoJ 14 javascript date momentjs luxon
我尝试使用该luxon库来摆脱moment- 将时间戳转换1615065599.426264为 ISO 日期。
根据在线纪元转换器,这对应于
GMT: 2021 年 3 月 6 日星期六 9:19:59.426 PM
您的时区: 2021 年 3 月 6 日星期六 10:19:59.426 PM GMT+01:00
相对时间: 3 天前
删除小数部分会得到相同的结果。
代码使用luxon:
let timestamp = 1615065599.426264
console.log(luxon.DateTime.fromMillis(Math.trunc(timestamp)).toISO())
console.log(luxon.DateTime.fromMillis(timestamp).toISO())Run Code Online (Sandbox Code Playgroud)
<script src="https://moment.github.io/luxon/global/luxon.min.js"></script>Run Code Online (Sandbox Code Playgroud)
这个结果是
1970-01-19T17:37:45.599+01:00
1970-01-19T17:37:45.599+01:00
Run Code Online (Sandbox Code Playgroud)
它可疑地接近Unix Epoch (1970-01-01 00:00:00)。
我的错误在哪里?
Sen*_*les 20
Luxon 可以使用 .fromSeconds() 函数接受以秒为单位的 UNIX/纪元时间。然后,您可以使用 .toISO() 函数输出 ISO 格式。
在你的具体例子中:
const { DateTime } = require('luxon')
//your other code here
const myDateTime = DateTime.fromSeconds(1615065599.426264)
const myDateTimeISO = myDateTime.toISO()
//outputs '2021-03-07T08:19:59.426+11:00'
Run Code Online (Sandbox Code Playgroud)
参考: https: //moment.github.io/luxon/#/parsing? id=unix-timestamps
所谓的“Unix 时间”计算自 1970 年 1 月 1 日以来的秒数,而 Luxon(以及 JavaScript 的大多数事物)期望一个具有毫秒分辨率的值。
将您的值乘以 1000 将得出预期结果:
> let timestamp = 1615065599.426264
undefined
> new Date(timestamp).toJSON()
'1970-01-19T16:37:45.599Z'
> new Date(timestamp * 1000).toJSON()
'2021-03-06T21:19:59.426Z'
Run Code Online (Sandbox Code Playgroud)
为了给出更完整的答案,确实有两种存储时间戳的方法:秒和毫秒精度。
JavaScript 确实默认使用 ms 精度。
Luxon 提供了 2 种不同的方法:
DateTime.fromMillis(1691760353000)DateTime.fromSeconds(1691760353)调用时两者都会产生相同的输出date.toISO():
2023-08-11T13:25:53.000+00:00根据您使用的精度,您需要使用其中之一。
我写这个答案是因为另一个答案并没有说得很清楚,而且我发现自己toSeconds在我真正想要的时候使用了toMillis.
| 归档时间: |
|
| 查看次数: |
24779 次 |
| 最近记录: |