Я пытаюсь получить разницу между двумя датами в секундах. Логика будет такой:
- установить начальную дату, которая будет сейчас;
- установить конечную дату, которая будет начальной датой плюс некоторое количество секунд в будущем (например, 15)
- получить разницу между этими двумя (количество секунд)
Причина, по которой я делаю это с датами, заключается в том, что конечная дата / время зависят от некоторых других переменных и никогда не меняются (это зависит от того, насколько быстро пользователь что-то делает), и я также храню начальную дату для других вещей.
Я пытался что-то вроде этого:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
Дело в том, что я никогда не получаю правильную разницу. Я попытался разделить, 24 * 60
что оставило бы меня с секундами, но я никогда не понимаю это правильно. Так что же не так с моей логикой? Возможно, я совершаю какую-то глупую ошибку, так как уже поздно, но меня беспокоит, что я не могу заставить ее работать :)
javascript
date
Roland
источник
источник
Ответы:
Код
Или даже проще,
(endDate - startDate) / 1000
как указано в комментариях, если вы не используете машинопись.Объяснение
Вам нужно вызвать
getTime()
метод дляDate
объектов, а затем просто вычесть их и разделить на 1000 (так как изначально это в миллисекундах). Кроме того, когда вы вызываетеgetDate()
метод, вы фактически получаете день месяца как целое число от 1 до 31 (не на основе нуля), а не время, которое вы получили бы при вызовеgetTime()
метода, представляет количество миллисекунд с 1 января 1970 года, 00:00декламация
В зависимости от ваших операций, связанных с датой, вы можете захотеть инвестировать в интеграцию библиотеки, такой как date.js или moment.js, которая значительно упрощает работу разработчика, но это только вопрос личных предпочтений.
Например, в moment.js мы бы сделали,
moment1.diff(moment2, "seconds")
что красиво.Полезные документы для этого ответа
источник
.valueOf()
, что-
оператор будет называть в любом случае ...Вы можете использовать
new Date().getTime()
для получения меток времени. Затем вы можете вычислить разницу между концом и началом и, наконец, преобразовать временную меткуms
вs
.источник
источник
Ниже код даст разницу во времени в секундах.
источник
Попробуйте использовать специальные функции из языков программирования высокого уровня. JavaScript
.getSeconds();
подходит здесь:источник
разница во времени между сейчас и 10 минутами позже, используя момент
источник