Итак, у меня есть две даты: YYYY-MM-DD и ZZZZ-NN-EE
Как узнать, сколько секунд между ними?
Итак, у меня есть две даты: YYYY-MM-DD и ZZZZ-NN-EE
Как узнать, сколько секунд между ними?
Я считаю, что 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);
а затем вы можете использовать это значение как разницу в миллисекундах (в обоих моих примерах одинаковое значение)
Просто вычтите:
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");
Если одна или обе ваши даты будут в будущем, то я боюсь, что вы SOL, если вы хотите получить точную точность. Время UTC имеет секунды прыжка, которые неизвестны примерно за 6 месяцев до их появления, поэтому любые даты, более короткие, чем это может быть неточным на некоторое количество секунд (и на практике, поскольку люди не обновляют свои машины, которые часто, вы может обнаружить, что любое время в будущем отключается на некоторое количество секунд).
Это дает хорошее объяснение теории проектирования библиотек даты и времени и почему это так: http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html#date_time.tradeoffs
создайте два объекта Date
и вызовите valueOf()
на обоих, затем сравните их.
var a = new Date("2010 jan 10"),
b = new Date("2010 jan 9");
alert(
a + "\n" +
b + "\n" +
"Difference: " + ((+a - +b) / 1000)
);
Вы можете сделать это просто.
var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
В bash:
bc <<< "$(date --date='1 week ago' +%s) - \
$(date --date='Sun, 29 Feb 2004 16:21:42 -0800' +%s)"
Для этого требуется наличие даты bc и gnu.
.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