У меня есть 2 отметки времени unix, я нахожусь в часовом поясе AsiaPacific / Auckland (GMT + 12, DaylightSavings = GMT + 13)
Я хочу рассчитать интервал количества дней между двумя временными метками, где один находится внутри летнего времени, а другой - нет.
Мои примеры дат:
От 7 Feb 2009 (1233925200)
до 21 September 2010 (1284985360)
(не включая 21-е) см. Здесь 591 день: http://www.timeanddate.com/date/durationresult.html?d1=7&m1=2&y1=2009&d2=21&m2=9&y2=2010
Давайте посчитаем, вот мои временные метки (оба основаны на времени Окленда 00:00)
1284985360-1233925200 = 51060160
51060160 / 86400 = 590.974
Так что да, мне нужен 591. Я не хочу использовать решение "округлить".
Есть ли какой-либо надежный метод, такой как strtotime, но для расчета интервалов дат, желательно, чтобы не требовалось минимум php 5.3+
РЕДАКТИРОВАТЬ: нужно уточнить, я использую STRTOTIME для получения этих временных меток, я думал, что это UTC
EDIT2: я считаю, что нашел проблему. Хотя моя дата окончания была 21 сентября, я фактически использовал time (), чтобы получить дату окончания, а time () возвращал неправильную метку времени, возможно, она не учитывает GMT + 12, независимо от того, что я переключил time () на strtotime (date ('d M Y')), и он вернул правильную метку времени! эврика 591 день
(strtotime('2010-09-21')-strtotime('2009-02-07'))/86400 == 591
. Помните, что временная метка Unix должна быть в часовом поясе GMT. - person Mchl   schedule 20.09.2010date('Y-m-d H:i:s',1284985360) == '2010-09-20 12:22:40'
иdate('Y-m-d H:i:s',1233925200) == '2009-02-06 13:00:00'
, чтобы было понятно, вам нужно округлить результат. - person Mchl   schedule 20.09.2010