strtotime weekday - странный результат

Linker

Новичок
filipchuk:

как уже было сказано, weekdays в данном случае, не соответствует понятию "рабочие дни", это больше подходит под "пятидневку"
5 weekdays === 7 days (неделя)
10 weekdays === 14 days (2 недели) и т.д.
видимо прибавляется полная неделя, целиком, в случае "+ 5 weekdays" в ситуации, когда выпадает пятница, т.е. последний день из пяти, вот и перескакивает на воскресенье.

Я попробовал так:
PHP:
$from = '2011-03-27';
$weekdays = 5;

$tst = strtotime($from.' + '.$weekdays.' weekdays');
$wd = date('w', $tst);

     if ($wd === '0') { $tst -= 172800; } // если воскресенье, вычитаем 2 суток

echo date('Y-m-d', $tst);
теперь всё должно быть корректно (с точки зрения обычной недели), если выпало на пятницу, остаётся пятница, а если на субботу или воскресенье, перескочит на понедельник.
 

filipchuk

Новичок
всем спасибо, свой велосипед уже готов был вчера, там действительно мало сложного
повторюсь, хотелось иметь готовое решение из коробки, но по всей видимости, работает оно не так, как ожидается
 

filipchuk

Новичок
единственное упоминание "-7 weekdays" - http://www.php.net/manual/en/datetime.formats.relative.php

кхм ... http://ua.php.net/ChangeLog-5.php
Version 5.3.0
support for adding/subtracting weekdays with strtotime() and DateTime::modify().
и куча багфиксов операций с днями недели в разных версиях

это просто какая-то сырая недокументированная фича, которую ТС экспериментально открыл, но рассчитывать на нее совсем не стоит
вообще, открыл не я, на стековерфолу нашел тему про "php business days", там и было это решение (с позитивной кармой), ему и поверил, а зря выходит :)
 

zerkms

TDD infected
Команда форума
Откомментился о его бажности, чтобы больше народ так же не натыкался :)
 
Сверху