javascript - 从 unix 时间戳获取以微秒为单位的 ISOString

标签 javascript date unix epoch systemd-journald

我有一个 epoch/unix 时间戳,是运行 journalctl -o json-pretty -f 命令后得到的。因此,我从给定的日志中获取 "__REALTIME_TIMESTAMP": "1576681153604871" 值。我想将其转换为 ISOString 格式,因此我使用以下代码

var result;
time = parseInt(time);
var msec = time/1000; // convert __REALTIME_TIMESTAMP to milliseconds from microseconds
var myDate = new Date(msec);
var isoDate = myDate.toISOString();

我得到的输出如下

"2019-12-18T14:25:49.605Z"

我什至希望显示微秒部分,例如

"2019-12-18T14:25:49.605762Z"

但是如果我不将纪元转换为毫秒,myDate.toISOString() 将无法正常工作。

我不知道 time % 1000 是否是提取微秒部分然后附加它以获得所需输出的正确方法。

那么有没有办法获得微秒格式的输出?

最佳答案

So is there a way to get the output in microsecond format ?

不使用内置方法。不过,您可以自己添加微秒部分。最好使用字符串方法来获取数字以保留前导零:

// Time value in microseconds
let tv = 1576681153064071;
// Get millisecond part
let msec = tv/1000;
// Get microsecond part - keep leading zeros
let μsec = String(tv).slice(-3);
// Get ISO 8601 timestamp
let isoDate = new Date(msec).toISOString();
// Add in microseconds
let isoDatePlus = isoDate.replace('Z', μsec + 'Z');

console.log(isoDatePlus);

不过,替换整个小数部分可能会更好,以防万一将来的某些实现决定在小数位后添加更多数字。

let tv = 1576681153064071;
let isoDate = new Date(tv/1e3).toISOString().replace(/\d+Z$/, String(tv).slice(-6) + 'Z');

console.log(isoDate);

关于javascript - 从 unix 时间戳获取以微秒为单位的 ISOString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394911/

相关文章:

javascript - 获取TinyMCE中光标位置或光标所在行数

javascript - 当数组作为依赖项传递时,React 中的 useEffect 会在无限循环中运行

javascript - 如何在 ngx-ckeditor Angular 7 中使用 insertText 方法

linux - 如何从 shell 脚本中变量中存储的日期中减去年份?

date - 如何计算一个月中的工作日数?

date - 如何解析格式为 : 的日期

javascript - php 注册类连接前端表单?

perl - CPAN shell 内存不足。如何在 Unix 上给它更多内存?

linux - 将plist中的字典解析为bash中的数组

linux - 如果其中一个文件存在,则在 bash shell 脚本中发送电子邮件警报