javascript - 如何将 Chrome 书签 "date_added"值解析为日期

标签 javascript google-chrome date

Chrome 书签文件是 JSON,其中包含代表特定日期和时间的“date_added”值,例如

{
 "checksum": "05b8bba8b5f0e9ad1cc8034755557735",
 "roots": {
    "bookmark_bar": {
       "children": [ {
          "children": [ {
             "date_added": "13170147422089597",
             "id": "121",
             "name": "NativeScript: Getting Started Guide",
             "type": "url",
             "url": "https://docs.nativescript.org/tutorial/chapter-0"
          } ],
...

我尝试将值视为纳秒并传递给 Date 构造函数:
new Date(13170147422089597 / 1000); // 2387-05-07T06:17:02.089Z

但这似乎不正确。

如何将值“13170147422089597”转换为日期或日期字符串?

最佳答案

Chrome 书签时间值是 1601-01-01T00:00:00Z 纪元的微秒。要转换为日期:

  • 除以 1,000 得到毫秒
  • 调整到 1970-01-01T00:00:00Z
  • 的纪元
  • 将结果值传递给 Date 构造函数

  • 例如。
    var timeValue = '13170147422089597';
    new Date(Date.UTC(1601,0,1) + timeValue / 1000); // 2018-05-07T06:17:02.089Z
    

    将值 Date.UTC(1601,0,1) 存储为常量 (-11644473600000) 并转换为函数给出:

    function chromeTimeValueToDate(tv) {
      var epoch = -11644473600000;
      return new Date(epoch + tv / 1000);
    }
    
    // Example
    ['13170147422089597',
     '13150297844686316',
     '13115171381595644'].forEach( tv => {
       console.log(chromeTimeValueToDate(tv))
    });

    关于javascript - 如何将 Chrome 书签 "date_added"值解析为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343828/

    相关文章:

    javascript - Chrome 中的 .setCapture 和 .releaseCapture

    c# - 通过 ASP.NET 代码隐藏下载文件时如何强制 Chrome 打开 "open file dialog"?

    java - 如何将 Instant 转换为日期格式?

    javascript - 使用带递归的 reduce 函数从多级树生成一个平面 id 数组?

    javascript - 获取插入符相对于 contenteditable div 中窗口的视觉位置

    JavaScript。如果数组包含重复数字,则 Array .sort() 方法为 Chrome 和 Firefox 返回不同的结果

    PHP 按日期排序

    java - 在java中生成UTC时间

    javascript - Vue 未定义,即使已导入

    javascript - 如何将新值传递到 typescript 中新创建的对象中