6

我看过

以及互联网上的大量其他文章,但我一生都无法理解如何将 Chrome 书签文件 (Windows) 中的 date_added 字段转换为合理的数字。

例如13024882639633631应该是 2013 年 9 月的日期,但我在我引用的第一个链接中尝试了所有可能的计算,但似乎无法得到一个合理的日期。它一直将日期计算为 2010 年。

4

3 回答 3

9

我已经用 chrome 书签检查了它,它为所有人提供了正确的值。13024882639633631好像是昨天。检查这里https://code.google.com/p/chromium/codesearch#chromium/src/base/time/time_win.cc&sq=package:chromium&type=cs并搜索MicrosecondsToFileTime

import datetime

def getFiletime(dt):
    microseconds = int(dt, 16) / 10
    seconds, microseconds = divmod(microseconds, 1000000)
    days, seconds = divmod(seconds, 86400)

    return datetime.datetime(1601, 1, 1) + datetime.timedelta(days, seconds, microseconds)

print format(getFiletime(hex(13024882639633631*10)[2:17]), '%a, %d %B %Y %H:%M:%S %Z')
于 2013-09-29T08:50:40.203 回答
5

这只是 Zaw LIn 对 python 3 的答案的转换。

import datetime

def getFiletime(dtms):
  seconds, micros = divmod(dtms, 1000000)
  days, seconds = divmod(seconds, 86400)

  return datetime.datetime(1601, 1, 1) + datetime.timedelta(days, seconds, micros)

print( getFiletime(13024882639633631).strftime( '%a, %d %B %Y %H:%M:%S %Z' ) )

输出:2013 年 9 月 28 日星期六 22:57:19

于 2013-11-30T23:40:30.757 回答
1

上述python脚本的javascript等价物

function ConvertToDateTime(srcChromeBookmarkDate) {
    //Hp --> The base date which google chrome considers while adding bookmarks
    var baseDate = new Date(1601, 0, 1);

    //Hp --> Total number of seconds in a day.
    var totalSecondsPerDay = 86400;

    //Hp --> Read total number of days and seconds from source chrome bookmark date.
    var quotient = Math.floor(srcChromeBookmarkDate / 1000000);
    var totalNoOfDays = Math.floor(quotient / totalSecondsPerDay);
    var totalNoOfSeconds = quotient % totalSecondsPerDay;

    //Hp --> Add total number of days to base google chrome date.
    var targetDate =  new Date(baseDate.setDate(baseDate.getDate() + totalNoOfDays));

    //Hp --> Add total number of seconds to target date.
    return new Date(targetDate.setSeconds(targetDate.getSeconds() + totalNoOfSeconds));
}

var myDate = ConvertToDateTime(13236951113528894);
var alert(myDate);
//Thu Jun 18 2020 10:51:53 GMT+0100 (Irish Standard Time)
于 2020-06-18T14:27:34.723 回答