Как получить правильную метку времени с параметром is_dst в PHP? - PullRequest
0 голосов
/ 30 марта 2009

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

Я понятия не имею, что это значит и что я могу с этим поделать. Есть идеи у кого-нибудь? потому что зимний час вызывает ужасную головную боль ....

Ответы [ 3 ]

2 голосов
/ 30 марта 2009
date("I", time());

даст вам 1, если летнее время и 0, если нет.

2 голосов
/ 30 марта 2009

со страницы руководства php:

"Каждый вызов функции даты / времени генерирует E_NOTICE, если часовой пояс недействителен, и / или сообщение E_STRICT, если используются системные настройки или переменная среды TZ. См. Также date_default_timezone_set ()"

это, вероятно, означает, что вы должны использовать date_default_timezone_set () ранее и пропустить параметр is_dst

2 голосов
/ 30 марта 2009

Использование gmmktime .

...