Google书签导出日期格式?

Mik*_*enn 13 formatting bookmarks export date

我一直在努力解析谷歌书签生成的导出文件中的书签.该文件包含以下日期属性:

ADD_DATE = "1231721701079000"

ADD_DATE = "1227217588219000"

这些不是标准的unix样式时间戳.有人能指出我在正确的方向吗?我会用c#解析它们,如果你真的想帮我解决的话.

Syn*_*ech 15

Chrome使用Windows时间格式(" Windows纪元 ")的修改形式作为其时间戳,包括Bookmarks文件和历史文件.Windows时间格式是自1601年1月1日以来100ns-es的数量.Chrome格式是自同一日期以来的微秒数,因此大1/10.

要将Chrome时间戳转换为Unix纪元,请转换为秒并补偿两个基本日期时间之间的差异(11644473600).

这是Unix的转换公式,JavaScript(以毫秒为单位的Unix),Windows和Chrome时间戳(你可以重新排列+ /×和 - /÷,但是你会失去一点精度):

u :  Unix       timestamp    eg: 1378615325
j :  JavaScript timestamp    eg: 1378615325177
c :  Chrome     timestamp    eg: 13902597987770000
w :  Windows    timestamp    eg: 139025979877700000

u =  (j / 1000)
u =  (c - 116444736000000)   / 10000000
u =  (w - 1164447360000000)  / 100000000

j =  (u * 1000)
j =  (c - 116444736000000)   / 10000
j =  (w - 1164447360000000)  / 100000

c =  (u * 10000000)          + 116444736000000
c =  (j * 10000)             + 116444736000000
c =  (w / 10)

w =  (u * 100000000)         + 1164447360000000
w =  (j * 100000)            + 1164447360000000
w =  (c * 10)
Run Code Online (Sandbox Code Playgroud)

请注意,这些都是非常大的数字,因此您需要使用64位数字,或者将其作为字符串处理,就像使用PHP的BC-math模块一样.


Sch*_*ern 7

1231721701079000自1970年1月1日起以微秒为单位看起来像时间.

perl -wle 'print scalar gmtime(1231721701079000/1_000_000)'
Mon Jan 12 00:55:01 2009
Run Code Online (Sandbox Code Playgroud)

我会在已知的时间制作一些书签并尝试确认.


小智 5

在Javascript中代码看起来像这样

function chromeDtToDate(st_dt) {
   var microseconds = parseInt(st_dt, 10);
   var millis = microseconds / 1000;
   var past = new Date(1601, 0, 1).getTime();
   return new Date(past + millis);
}
Run Code Online (Sandbox Code Playgroud)