对于特定的应用程序,我需要在Javascript中处理elisp内部unix时间日期格式。 Elisp(当前时间)采用这种特殊格式:
current-time是`editfns.c'中的内置函数。 (当前时间)
返回当前时间,为1970-01-01 00:00:00以来的秒数。 时间以整数列表的形式返回(HIGH LOW USEC PSEC)。 HIGH具有秒的最高有效位,而LOW具有 最低有效16位。 USEC和PSEC是微秒和 皮秒计数。
所以我得到一个时间字符串:[21039,58064,0]
((21039 58064 0)
的json表示)。如何使用javascript将其转换为JS Date
对象?它很容易在emacs中,但这不是一个选项
答案 0 :(得分:1)
Date(21039 * Math.pow(2, 16) + 58064);
请注意,您不需要以这种方式编写Math.pow(2, 16)
,因为这是一个常量表达式。这样你就可以理解发生了什么。
另请注意,您不能对浮点数使用按位运算(Number
大于2 ^ 32(在JavaScript中)。所以你必须乘以而不是移位和求和而不是“或”。