是否可以浮点格式表示日期时间?

时间:2018-11-16 14:46:26

标签: javascript node.js datetime

基本上,我正在使用两种语言,一种是ruby,另一种是javascript。 在红宝石中,您可以执行以下操作:

date.to_f 

->并为您提供日期的浮点表示,如下所示:

1541393269.3742561

但是当您用javascript说时:

Date.now()

1542377024455

我也尝试过使用矩js,但是仍然不确定如何反映时间的浮点表示。

有没有办法用Ruby中的浮点数表示JavaScript中的日期?

2 个答案:

答案 0 :(得分:1)

使用performance API可以获得比Date.now()更高的精度,尽管为了减轻Spectre的影响,某些浏览器会任意限制此API的精度,因此如果您确实需要精确的值,请务必小心:

const to_f = () => (performance.timeOrigin + performance.now()) / 1000;
console.log(to_f());

答案 1 :(得分:1)

JavaScript自该时期以来内部使用毫秒。

尽管我对Ruby并不熟悉,但看起来date.to_f自该纪元以来以秒为单位给出了一个数字,您必须将该数字乘以1000才能与JavaScript的Date兼容。

var rubyTime = 1541393269.3742561;
var jsTime = 1542377024455;

console.log(new Date(rubyTime * 1000));
console.log(new Date(jsTime));

鉴于我们知道理解将JavaScript时间戳转换为浮点数的值之间的关系,只需除以1,000即可。

1542377024455 / 1000 => 1542377024.455

不幸的是,尽管JavaScript的精度不一样,所以可以得到的最接近的精度是1毫秒(10 -3 秒),但是Ruby的精度却低至1微秒(10 -6 )秒。