【问题标题】:Get ISOString in microseconds from unix timestamp从 unix 时间戳获取 ISOString(以微秒为单位)
【发布时间】:2020-04-11 04:14:14
【问题描述】:

我有一个纪元/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 是否是正确的方法,提取微秒部分然后附加它以获得所需的输出。

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

【问题讨论】:

    标签: javascript date unix epoch systemd-journald


    【解决方案1】:

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

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

    // 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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2015-11-18
      相关资源
      最近更新 更多