Удобная работа с датами в 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

2 комментария so far.

  1. dmitriy:
    ‘first day of last month’ — потрясающе! ))

LEAVE A COMMENT