Intereting Posts
Изменение размера изображений с помощью PHP Как заставить символ замены превращаться в объект html в PHP? Отправить массив формы на PHP с использованием AJAX в качестве массива POST PHP, Ошибка анализа: синтаксическая ошибка, неожиданный T_FUNCTION Что такое кеш байт-кода и как его использовать в PHP? Простая строка PHP заменяется? PHP-количество вхождений символов строки в другой строке Получасовые часовые пояса отсутствуют назначить вывод выполнения скрипта PHP переменной? PHP Добавить тире для декодирования Как избавиться от PHP Примечание: Неопределенный индекс: HTTPS в X на линии 123 Каковы реальные преимущества шаблонов для двигателей только с использованием PHP? Добавьте строку в таблицу и отправьте на сервер, отправьте стол через jquery на php Как отобразить веб-страницу и сохранить ее местоположение в секрете? mysql и php – Извлечение данных из базы данных на основе зарегистрированного пользователя

strtotime date weird result

Учитывая следующую строчную дату: Fri Sep 02 2011 21:00:00 GMT+0100 (GMT Daylight Time)

в php, если я делаю strtotime над вышесказанным, а затем преобразовываю его в дату строки, он, кажется, набирает час.

 echo $str_date," Vs ",date("c",strtotime($str_date)); 

Производит:

Fri Sep 02 2011 21:00:00 GMT+0100 (GMT Daylight Time) 2011-09-02T22:00:00+01:00

Я понимаю, что это связано с летней экономией, но как это компенсируется?

Related of "strtotime date weird result"

Я понимаю, что это связано с летней экономией, но как это компенсируется?

Не используя date() и strtotime() ; класс DateTime является предпочтительным.

 $str_date = 'Fri Sep 02 2011 21:00:00 GMT+0100'; $datetime = new DateTime($str_date); echo $datetime->format('c'); // 2011-09-02T21:00:00+01:00 

или в процедурном стиле

 $str_date = 'Fri Sep 02 2011 21:00:00 GMT+0100'; echo date_format(date_create($str_date), 'c'); // 2011-09-02T21:00:00+01:00 

Кроме того: если вы хотите использовать date() / strtotime() то, как показывают другие ответы и ваши собственные наблюдения, вам нужно быть осторожными с часовыми поясами, используемыми в строке даты и вашем скрипте.

Я думаю, вы недоразумение,
в этом случае нет дневной экономии света,
НО GMT , вы получаете один час из-за этого

в мой часовой пояс (GMT + 8)

 php -r "echo date('r', strtotime('Fri Sep 02 2011 21:00:00 GMT+0100'));" Sat, 03 Sep 2011 04:00:00 +0800 

который я получаю 7 часов, из-за GMT+8 - GMT+1 = 7

Какую версию PHP вы используете? Какова ваша настройка date.timezone ? Я спрашиваю, потому что я не могу воспроизвести ваш вывод с PHP 5.3.6 в Mac OS X:

 $str_date = 'Fri Sep 02 2011 21:00:00 GMT+0100 (GMT Daylight Time)'; echo $str_date," Vs ",date("c",strtotime($str_date)); // Fri Sep 02 2011 21:00:00 GMT+0100 (GMT Daylight Time) Vs 1970-01-01T01:00:00+01:00 

Это правильно, потому что Fri Sep 02 2011 21:00:00 GMT+0100 (GMT Daylight Time) не является допустимой строкой даты / времени.

 $str_date = 'Fri Sep 02 2011 21:00:00 GMT+0100'; echo $str_date," Vs ",date("c",strtotime($str_date)); // Fri Sep 02 2011 21:00:00 GMT+0100 Vs 2011-09-02T22:00:00+02:00 

Это правильно, потому что я нахожусь в GMT + 2.

Кажется, что strtotime() отображает ваше время как формат SOAP: YY "-" MM "-" DD "T" HH ":" II ":" SS frac tzcorrection?

результат:

 "2008-07-01T22:35:17.02", "2008-07-01T22:35:17.03+08:00" 

Вы можете попытаться отформатировать свою временную строку как другой формат времени. Посмотрите http://www.php.net/manual/en/datetime.formats.compound.php