基本上,我正在使用两种语言,一种是ruby,另一种是javascript。 在红宝石中,您可以执行以下操作:
date.to_f
->并为您提供日期的浮点表示,如下所示:
1541393269.3742561
但是当您用javascript说时:
Date.now()
1542377024455
我也尝试过使用矩js,但是仍然不确定如何反映时间的浮点表示。
有没有办法用Ruby中的浮点数表示JavaScript中的日期?
答案 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 )秒。