我有两种格式的时间戳数据,其中 3F536DDA -> 1378397085768000
和 3F52C3C3 -> 1378353476238000
。我似乎无法弄清楚什么格式 3F536DDA
是什么,也不知道如何将它转换为有问题的时代。任何帮助将不胜感激!
更新
我发现了这个:
自 1980 年 1 月 6 日格林威治标准时间 00:00:00 以来以秒为单位的修复时间的 8 位十六进制表示。
这似乎是 GPS 时间。
我可能从这里的转换中遗漏了一些东西,我只是减去 1980 年 1 月 6 日和 1970 年 1 月 1 日之间的差异...
time = (1378397085 - 315964800)
console.log '3F536DDA' # What I expected
console.log time.toString(16) # What I get: 3F536D1D
最佳答案
好吧,这些看起来就像十六进制数字,自 1/1/1970 UTC 以来的秒数。
3F536DDA hex == 1062432218 dec == Mon, 01 Sep 2003 16:03:38 GMT
3F52C3C3 hex == 1062388675 dec == Mon, 01 Sep 2003 03:57:55 GMT
自 1/1/1970 UTC 以来,其他数字看起来像十进制微秒,但它们不等于其他数字:
1378397085768000 == Thu, 05 Sep 2013 16:04:45 GMT
1378353476238000 == Thu, 05 Sep 2013 03:57:56 GMT
如果这些不是您想要的日期,则可能涉及其他时间。例如,如果它们起源于 Microsoft Windows,则它们肯定会有所不同。
你从哪里弄来的?这些知识将有助于他们的解释。
更新
既然你说它们是基于 1980 年 1 月 6 日的纪元,那么你可以这样做:
var d = new Date(Date.UTC(1980,0,6) + parseInt('3F536DDA', 16) * 1000);
d.toISOString(); // 2013-09-05T16:03:38.000Z
或者更好的是,使用 moment.js
var m = moment.utc("1980-01-06").add('seconds', parseInt('3F536DDA', 16));
m.toISOString(); // 2013-09-05T16:03:38.000Z
关于javascript - 这是什么时间格式,如何将其转换为纪元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691061/