Получить количество дней при вычитании дат
Здравствуйте, господа. Такой вопрос: есть две даты, нужно узнать количество полных дней между этими датами.
делалось это так: var diff = Math.floor((endingDate.getTime() - beginingDate.getTime()) / 24 / 60 / 60 / 1000); Все бы хорошо, но при этом не учитывается переход на зимнее/летнее время. То есть если от даты 02.11.2010 00:00:00 отнимать 30.10.2010 00:00:00, то получим 3 дня и 1 час. Как с этим бороться ? |
Я думаю, нужно отменить летнее время.
|
Один уже отменил, чем ещё больше усугубил положение с вычислением дат.
|
subzey, +1 .
для летнего/зимнего времени нужна таблица переходов временной зоны. другой вариант отказаться в расчетах от летнего времени. |
Цитата:
|
для полноты картины даты (02.11.2010 00:00:00) должны быть со смешением (+NNN) , тогда можно будет вычислить
|
А в чем проблема? Проходит ровно 3 часа:
alert( new Date(new Date('11/02/2010 00:00:00').getTime() - new Date('10/30/2010 00:00:00').getTime()) ) // Sun Jan 04 1970 03:00:00 GMT+0200 |
Kolyaj,
Вы про Владимира Ильича Ульянова/Ленина и декретное время? Я предлагаю собраться форумом и отменить в СНГ (хотя бы) переход на летнее время. Я думаю, у нас получится! ^.^ |
subzey,
нет, я про другого Владимира -- Владимировича. Я перепутал с временными поясами. |
Цитата:
Цитата:
Цитата:
|
Spinne, какие исходные данные? и вопрос непонятен чего именно нужно ?
|
для каждой даты просто укажи часовое смещение соответствующее её сезону. для москвы это: gmt+0300 и gmt+0400
|
vflash,
Дано: Data1, Data2. Найти: Data2 - Data1 = количество целых дней В чем проблема: 02.11.2010 00:00:00 - 30.10.2010 00:10:00 = 3 дня и 50 минут. Нужен алгоритм, который выдаст ответ 2 дня, 23 часа и 50 минут Даты могут быть любыми, и количество переходов на зимнее/летнее время между датами тоже любое. |
Spinne по исходным данным - какой часовой пояс? москва, китай или локально по браузеру new Date.getTimezoneOffset() . приводите к timestamp с учетом временной зоны .
|
vflash,
часовой пояс Украина. |
Да пофигу какая зона, если есть DST, то в случае расчетов с датами летнего и зимнего времени будет погрешность на час.
|
А у меня еще вопрос. А почему
var x = (Date.UTC(2010, 10, 31, 00, 00, 00) - Date.UTC(2010, 10, 28, 00, 00, 00)) /24/60/60/1000; alert(x); и var x = (Date.UTC(2010, 11, 01, 00, 00, 00) - Date.UTC(2010, 10, 28, 00, 00, 00)) /24/60/60/1000; alert(x); возвращают одинаковое количество дней ? |
время UTC это точка отсчета . там нет летнего времени.
и еше Date.UTC(2010, 11, 01, 00, 00, 00) это декабрь "Wed Dec 01 2010 03:00:00 GMT+0300" |
Господа, плиз, набросайте примерчик, как это должно нормально работать...
|
Часовой пояс GMT +3, время: 04:56. |