Ошибка в strtotime () - PullRequest
       1

Ошибка в strtotime ()

0 голосов
/ 10 января 2012
$dateTime="2011-10-12 00:00:00";

echo $newDateTime =date("Y-m-d H:i:s", strtotime($dateTime.' -1 hours 30 minutes'));

Результат приведенного выше кода: '2011-10-11 23: 30: 00' . Тем не менее, правильный ответ должен быть 2011-10-11 22:30:00.

Что-то не так в коде, и кто-нибудь может мне помочь?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 10 января 2012

23:30 - ожидаемый результат (если вы знаете, что происходит).

Относительные части строки (-1 hours 30 minutes) обрабатываются отдельно как -1 hours и 30 minutes.Это два экземпляра формата number space? (unit | 'week'), как описано в документации Относительные форматы .

Из-за этого совокупное относительное изменение времени составляет всего -30 minutes, который с полуночи дает 23:30.

Чтобы получить желаемый эффект, либо:

  • используйте одно относительное утверждение (например, -90 minutes)
  • сделайте свое первоначальное минутное утверждение отрицательным как -1 hours -30 minutes
  • или используйте специальный формат ago как 1 hours 30 minutes ago

См. http://php.net/datetime.formats.relative для получения дополнительной информации.

1 голос
/ 10 января 2012

функции даты не полностью учитывают переход на летнее время.Попробуйте вместо этого использовать объекты dateTime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...