Получите разницу во времени между двумя датами в секундах
Я пытаюсь получить разницу между двумя датами в секундах. Логика будет такой:
- установите начальную дату, которая будет теперь;
- установите окончательную дату, которая будет начальной датой плюс некоторое количество секунд в будущем (скажем, например, 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
, который оставил бы меня с секундами, но я никогда не ошибаюсь. Так что же с моей логикой? Я могу совершить какую-то глупую ошибку, поскольку это довольно поздно, но меня беспокоит, что я не могу заставить ее работать:)
Ответы
Ответ 1
Код
var startDate = new Date();
// Do your operations
var endDate = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
Или даже проще (endDate - startDate) / 1000
, как указано в комментариях, если вы не используете typescript.
Объяснение
Вам нужно вызвать метод getTime()
для объектов Date
, а затем просто вычесть их и делить на 1000 (поскольку он изначально был в миллисекундах). В качестве дополнительного, когда вы вызываете метод getDate()
, вы фактически получаете день месяца как целое число от 1 до 31 (не на основе нуля), в отличие от времени, которое вы получили от вызова метод getTime()
, представляющий число миллисекунд с 1 января 1970 года, 00:00
Рант
В зависимости от ваших действий, связанных с датой, вы можете инвестировать в интеграцию библиотеки, такой как date.js или moment.js, которые делают вещи намного проще для разработчика, но это только вопрос личных предпочтений.
Например, в moment.js мы будем делать moment1.diff(moment2, "seconds")
, что красиво.
Полезные документы для этого ответа
Ответ 2
<script type="text/javascript">
var _initial = '2015-05-21T10:17:28.593Z';
var fromTime = new Date(_initial);
var toTime = new Date();
var differenceTravel = toTime.getTime() - fromTime.getTime();
var seconds = Math.floor((differenceTravel) / (1000));
document.write('+ seconds +');
</script>
Ответ 3
Вы можете использовать new Date().getTime()
для получения временных меток. Затем вы можете рассчитать разницу между окончанием и началом и, наконец, преобразовать метку времени, которая ms
в s
.
const start = new Date().getTime();
const end = new Date().getTime();
const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);
Ответ 4
попробуйте использовать специальные функции из языков программирования высокого уровня. JavaScript .getSeconds();
подходит здесь:
var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds();
var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds();
alert(specifiedTimeSeconds-currentTimeSeconds);
Ответ 5
разница времени между теперь и 10 минутами позже с использованием momentjs
let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');
let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;
Ответ 6
Ниже код даст разницу во времени в секундах.
var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second
alert(timeDiffInSecond );