Вопрос по time, javascript – Как рассчитать мс с полуночи в Javascript
Каков наилучший способ рассчитать время, прошедшее с (последней) полуночи в мс?
но вместо использования часов: минут: секунд все преобразуется в секунды.
Я думаю, что это должно сделать это:
var now = new Date();
var hours = now.getHours()*(60*60);
var minutes = now.getMinutes()*60;
var seconds = now.getSeconds();
var secSinceMidnight = hours+minutes+seconds;
Много ответов кромеRobG (рекомендуемый ответ), Kolink & APOS; s а такжеЛай & APOS; s здесь не так
Давайте посмотрим ближе друг к другу
First mistake
OptimusCrime а такжеАндрей Д. ответы:
Какскуловая кость sugested, если коррекция перехода на летнее время была применена в ближайшую полночь, мы получаем неверное значение. Давайте отладим:
- Suppose it's last Sunday of March
- The time is fixed at 2 am.
- If we see 10 am on the clock, there's actually 11 hours passed from midnight
- But instead we count
10 * 60 * 60 * 1000
ms - The trick is played when midnight happens in different DST state then current
Second mistake
kennebeck & APOS; s ответ:
КакRobG пишет, что часы могут тикать, если вы получаете системное время дважды. Мы можем даже появляться в разные даты иногда. Вы можете воспроизвести это в цикле:
for (var i = 0; true; i++) {
if ((new Date()).getTime() - (new Date()).getTime()) {
alert(i); // console.log(i); // for me it's about a 1000
break;
}
}
Third моя личная ловушка, которую вы могли бы испытать
Рассмотрим следующий код:
var d = new Date(),
msSinceMidnight = d - d.setHours(0,0,0,0);
msSinceMidnight
всегда0
поскольку объект изменяется во время вычисления перед операцией вычитания
Наконец, этот код работает:
var d = new Date(),
msSinceMidnight = d.getTime() - d.setHours(0,0,0,0);