Почему на одну неделю выходной? - PullRequest
0 голосов
/ 07 октября 2011
strtotime("third Saturday October 2011")

Должно быть 15.10.2011.Тем не менее, это происходит в 22.10.2011Я предполагаю, что это потому, что октябрь 2011 года начинается в субботу, а PHP смотрит на первую полную неделю.Поскольку 10/1/2011 является субботой, а не полной неделей, она игнорирует ее.

В некоторых исследованиях предлагалось установить "of" между днем ​​недели и месяцем, но это не сработает.

Любые предложения о том, почему это происходит и что я могу сделать, чтобы исправить это?

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Это задокументированный недостаток в PHP <5.2.7 (см. <a href="http://php.net/strtotime" rel="nofollow"> strtotime ):

В PHP 5 до 5.2.7, запрашивая данное вхождение данного будний день в месяце, где этот будний день был первым днем ​​месяца неправильно добавил бы одну неделю к возвращенной метке времени. Это имеет исправлено в 5.2.7 и более поздних версиях.

Вам нужно будет обновить PHP или использовать обходной путь, как предлагает Джонатан Кун.

1 голос
/ 07 октября 2011

Я получил те же результаты, что и вы на php 5.2.6. Это работает для меня, хотя и не идеально.

echo date('Y-m-d', strtotime('Saturday October 2011 +2 weeks'));
0 голосов
/ 07 октября 2011
<?php echo date('Y-m-d', strtotime('third Saturday of October 2011')); ?>

У меня отлично работает. Выход составляет 2011-10-15.

...