Я пытаюсь получить понедельник и воскресенье (первый и последний день недели соответственно в Коста-Рике). Итак, я сделал это:
$now = new \DateTime();
$monday = new \DateTime();
$monday = $monday->modify("monday this week");
$sunday = new \DateTime();
$sunday = $sunday->modify("sunday this week");
echo "timezone: " . date_default_timezone_get();
echo "<br>";
echo "now: " . $now->format('d/m/Y H:i');
echo "<br>";
echo "monday: " . $monday->format('d/m/Y H:i');
echo "<br>";
echo "sunday: " . $sunday->format('d/m/Y H:i');
Выход:
timezone: America/Costa_Rica
now: 26/10/2014 19:01
monday: 27/10/2014 00:00
sunday: 02/11/2014 00:00
Но как возможно, что текущая неделя указывает на будущие даты?
Попробуй это:
$monday = new DateTime();
// create DateTime object with current time
$monday->setISODate($monday->format('o'), $monday->format('W'));
// set object to Monday this week
$sunday = clone $monday;
// clone DateTime object
$sunday->modify('+6 day');
// add 6 days to Monday, to get the Sunday
echo sprintf(
'This week is stared on %s, and ended on %s.',
$monday->format('Y-m-d'),
$sunday->format('Y-m-d')
);
// just print out the result
Других решений пока нет …