Источник:
Удобная работа с датами в PHP . Перепост.
Периодически возникают задачи типа вернуть дату «первого числа прошлого месяца», или «прошлого понедельника».
Это можно решить как-то так:
$dt = self::getCurrentMonthStartDt();
$dt->setTime( 0, 0, 0 );
$dt->setDate( $dt->format( 'Y' ), $dt->format( 'm' ) - 1, 1 );
return $dt;
...
$dt = new DateTime();
$dt->modify( '-' . ( $dt->format( 'N' ) - 8 ) . ' days' );
$dt->setTime( 0, 0, 0 );
return $dt;
А можно гораздо проще:
$dt = new DateTime( 'first day of last month' );
$dt->setTime( 0, 0, 0 );
return $dt;
...
$dt = new DateTime( 'mon this week' );
$dt->setTime( 0, 0, 0 );
return $dt;
It’s a kinda magic, но работает.
***
От себя: да, работает. :)
Мануал тут:
http://www.php.net/manual/ru/datetime.formats.relative.php