Сколько секунд между двумя датами? - PullRequest
156 голосов
/ 08 января 2010

Итак, у меня есть две даты YYYY-MM-DD и ZZZZ-NN-EE

Как я могу узнать, сколько секунд между ними?

Ответы [ 8 ]

213 голосов
/ 08 января 2010

Я принимаю YYYY & ZZZZ для обозначения целочисленных значений, которые обозначают год, MM & NN для обозначения целочисленных значений, обозначающих месяц года, и DD & EE в качестве целочисленных значений, обозначающих день месяца.

var t1 = new Date(YYYY, MM, DD, 0, 0, 0, 0);
var t2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0);
var dif = t1.getTime() - t2.getTime();

var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);

Удобным источником для дальнейшего использования является сайт MDN

В качестве альтернативы, если ваши даты записаны в формате, javascript может разобрать

var dif = Date.parse(MM + " " + DD + ", " + YYYY) - Date.parse(NN + " " + EE + ", " + ZZZZ);

и затем вы можете использовать это значение в качестве разницы в миллисекундах (в обоих моих примерах diff имеет одинаковое значение)

73 голосов
/ 08 января 2010

Просто вычтите:

var a = new Date();
alert("Wait a few seconds, then click OK");

var b = new Date();
var difference = (b - a) / 1000;

alert("You waited: " + difference + " seconds");
14 голосов
/ 08 января 2010

Если одна или обе ваши даты в будущем, то я боюсь, что вы СОЛНЦЕ, если хотите с точностью до секунды. Время по Гринвичу имеет високосные секунды, которые не известны примерно за 6 месяцев до того, как они произойдут, поэтому любые даты, превышающие эту, могут быть неточными на некоторое количество секунд (и на практике, поскольку люди не обновляют свои машины так часто, вы может обнаружить, что любое время в будущем будет отключено на некоторое количество секунд).

Это дает хорошее объяснение теории проектирования библиотек даты и времени и почему это так: http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html#date_time.tradeoffs

5 голосов
/ 23 сентября 2017

Вы можете сделать это просто.

var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
5 голосов
/ 08 января 2010

создайте два Date объекта и вызовите valueOf() для обоих, затем сравните их.

Ссылка на объект JavaScript Date

4 голосов
/ 08 января 2010
var a = new Date("2010 jan 10"),
    b = new Date("2010 jan 9");

alert(
    a + "\n" + 
    b + "\n" +
    "Difference: " + ((+a - +b) / 1000)
);
0 голосов
/ 02 октября 2013

В Баш:

bc <<< "$(date --date='1 week ago' +%s) - \
    $(date --date='Sun,  29 Feb 2004 16:21:42 -0800' +%s)"

Требуется установка даты bc и gnu.

0 голосов
/ 06 июля 2010

.Net предоставляет класс TimeSpan, чтобы выполнить математику за вас.

var time1 = new Date(YYYY, MM, DD, 0, 0, 0, 0)
var time2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0)

Dim ts As TimeSpan = time2.Subtract(time1)

ts.TotalSeconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...