PHP дата / strtotime конвертируется в неправильную дату - PullRequest
0 голосов
/ 22 октября 2011

В некоторых случаях data() неправильно конвертирует мои даты.

Мои форматы дат выглядят так: Fri Oct 25 15:00:00 EDT 2011

Строка даты поступает из внешнего источника, поэтому яневозможно изменить формат.

// output incorrect - Fri, 28 Oct 2011 15:00:00 -0400
date("r", strtotime("Fri Oct 25 15:00:00 EDT 2011"))

// output correct - Fri, 21 Oct 2011 15:00:00 -0400
date("r", strtotime("Fri Oct 21 15:00:00 EDT 2011"))

Я не могу понять, почему просто изменить день не удается конвертировать.

Моя конечная цель - создать объект DateTime, но он страдаетиз той же проблемы.

// output - Fri Oct 28 19:00:00 EDT 2011
DateTime("Fri Oct 22 19:00:00 EDT 2011")

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

25 октября 2011 г. - вторник. Strtotime интерпретирует вашу строку даты как «что будет в следующую пятницу после 25 октября», и возвращает (то, что считает) правильный ответ: 28 октября.

Итак, правило GIGO применимо. Ты кормишься мусором и удивляешься, почему ты выбрасываешь мусор.

0 голосов
/ 22 октября 2011

date() работает отлично. Проблема в том, что в ваших примерах с неверным выводом указана дата , а не пятница .

Вы можете удалить первые 4 символа, если они всегда равны Fri.

0 голосов
/ 22 октября 2011

Значение, которое вы передаете strtotime, не соответствует. Там нет пятницы 25, 2011.

http://www.timeanddate.com/calendar/monthly.html

...