как получить правильную метку времени с помощью параметра is_dst в PHP?
Вопрос
Мы создаем временную метку unix с помощью метода mktime, задающего следующие атрибуты:
print_r(mktime(0,0,0,3,1,2009));
print_r(mktime(null,null,null,3,1,2009) / 60 / 60 / 24) . "days");`
это создает результат
1235862000
14303.958333333 days
это должно быть 14304 дня.Проблема в данном случае в зимнем часе.Вы можете использовать параметр is_dst, и когда мы используем 0 (по умолчанию -1), это иногда работает правильно, давая в результате 14304 дня.
Но иногда это дает следующую проблему:
Строгие стандарты:mktime() [function.mktime]: параметр is_dst устарел.
я понятия не имею, что это значит и что я могу с этим поделать.Есть идеи у кого-нибудь?потому что зимний час вызывает ужасную головную боль....
Решение
Использовать гммктайм.
Другие советы
date("I", time());
Даст вам 1, если это летнее время, и 0, если нет.
Со страницы руководства PHP:
«Каждый вызов функции даты/времени будет генерировать E_NOTICE, если часовой пояс недействителен, и/или сообщение E_STRICT, если используются системные настройки или переменная среды TZ.Смотрите также date_default_timezone_set()"
это, вероятно, означает, что вам следует использовать date_default_timezone_set() ранее и пропустите параметр is_dst