代码之家  ›  专栏  ›  技术社区  ›  RobG

如何将chrome书签的“date_added”值解析为日期

  •  1
  • RobG  · 技术社区  · 6 年前

    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"
              } ],
    ...
    

    我尝试将该值作为纳秒处理并传递给日期构造函数:

    new Date(13170147422089597 / 1000); // 2387-05-07T06:17:02.089Z
    

    但这似乎不对。

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

    2 回复  |  直到 6 年前
        1
  •  0
  •   RobG    6 年前

    chrome书签的时间值是1601-01-01t00:00:00z的纳秒。要转换为日期:

    1. 除以1000得到毫秒
    2. 调整到1970-01-01t00:00:00z的历元
    3. 将结果值传递给日期构造函数

    例如。

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

    存储值日期。utc(1601,0,1)为常量(-1164473600000)并转换为函数给出:

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

    我喜欢在电子表格中创建这些东西的原型,然后用您碰巧使用的任何一种语言编写编码公式都应该很简单。

    公式=“2001-1-1”+A2/24/60/60/1000000-400*365.25+3+7/24

    说明:

    • 从excel(我用的是电子表格)可以处理的任意日期开始…JAN1,2001
    • 以天(24小时60分60秒乘以百万分之一秒)为单位添加书签的数据值[添加日期]或[上次访问桌面]或[修改日期](在上面我公式的单元格A2中
    • 减去400年的天数(这是400年,包括闰年和7小时的时钟调整,从2001年的日期以上,因为不知何故cobol开发人员陷入了1601年,成为他们的第一年,所以他们把他们的'时代'。事情是怎么开始的,嗯?)

    例如,chrome的书签[添加日期]值为“1319065090569900”,因此: “2001-1-1”+1319065090569900/24/60/60/1000000-400*365.25+3+7/24产量12/30/2018 8:41:46pm

    您可以在此处找到书签文件:

    %localappdata%\google\chrome\user data\default\bookmarks

    从当前版本的Chrome(v71)起

    ps-window time实用程序也可以为您完成,如果您只需要快速的一次性转换:type

    w32tm.exe/ntte 13190650905699000

    在命令提示下-请注意,我必须添加一个“0”(或乘以10)。

        3
  •  0
  •   Aedmunde    5 年前

    为了节省时间…(回想起来很明显)。 书签导出文件的格式不同,导出书签文件中的日期值add_date为10个字符,在json文件中,date_added字段的长度为17个字符。

    用日期加上的除法不能立即给出有用的答案。