date - 谷歌书签导出日期格式?

我一直致力于从 google 书签生成的导出文件中解析出书签。此文件包含以下日期属性:

ADD_DATE="1231721701079000"

ADD_DATE="1227217588219000"

这些不是标准的 unix 样式时间戳。有人可以在这里指出我正确的方向吗?如果您真的想帮助我,我将使用 c# 解析它们。

最佳答案

Chrome 在 Bookmarks 文件和历史文件中都使用 Windows 时间格式的修改形式(“Windows epoch”)作为其时间戳。 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)

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

https://stackoverflow.com/questions/539900/

相关文章:

google-apps-script - 单元格处于事件状态时突出显示整行

ruby - 在rails应用程序中生成pdf时如何用Prawn定义行高?

reporting-services - 格式化电话号码并在返回为空时隐藏#ERROR SSRS

r - 如何将具有混合日期格式的变量转换为一种格式?

java - 如何在 Java 中使用前导空格格式化数字

java - 如何在 Java 中设置尊重用户操作系统设置的日期和时间格式

android - 阻止 Android Studio 包装方法和构造函数

c# - Visual Studio 改变了 Ctrl-K-D 的工作方式

html - Aptana 3 中的代码格式化

r - 在 knitr 上设置全局千位分隔符