как получить правильную метку времени с помощью параметра is_dst в PHP?

StackOverflow https://stackoverflow.com/questions/696552

  •  22-08-2019
  •  | 
  •  

Вопрос

Мы создаем временную метку 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top