Можно ли изобразить дату и время в формате с плавающей точкой? - PullRequest
0 голосов
/ 16 ноября 2018

В основном я работаю с двумя языками, один из которых является ruby, а другой - javascript.В ruby ​​вы можете сделать что-то вроде:

date.to_f 

-> и получить представление даты с плавающей точкой, например:

1541393269.3742561

Но когда вы говоритев javascript:

Date.now()

1542377024455

Я также пытался с моментом js, но все еще не совсем уверен, как отразить это представление с плавающей точкой времени.

Есть лиспособ представить дату в JavaScript с помощью числа с плавающей запятой, как в ruby?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

JavaScript внутренне использует миллисекунды с начала эпохи.

Хотя я не знаком с Ruby, похоже, что date.to_f дает число в секундах с начала эпохи, и вам придется умножить это число на 1000, чтобы быть совместимым с датой JavaScript.

var rubyTime = 1541393269.3742561;
var jsTime = 1542377024455;

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

Учитывая, что мы знаем, понимаем связь между значениями для преобразования метки времени JavaScript в число с плавающей точкой, просто поделим на 1000.

1542377024455 / 1000 => 1542377024.455

К сожалению, хотя JavaScript просто не обладает той же точностью, поэтому ближайшая вы можете получить 1 миллисекунду (10 -3 секунд), но Ruby, похоже, имеет точность до 1 микросекунды (10 *) 1016 * -6 ) секунд.

0 голосов
/ 16 ноября 2018

Используя API производительности , вы можете получить более высокую точность, чем Date.now(), хотя для смягчения Spectre некоторые браузеры произвольно ограничивают точность этого API, поэтому будьте осторожны, если вам действительно нужны точные значения:

const to_f = () => (performance.timeOrigin + performance.now()) / 1000;
console.log(to_f());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...