Получение первого дня каждой недели в 6 месяцев - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь понять, как я могу получить первый день недели за последние 6 месяцев и не могу найти рабочее решение.

Если я напишу date("Y-m-d 00:00:00", strtotime("-1 week", date("Y-m-d")); Это просто вычитает7 дней с текущей даты;я хочу всегда возвращать дату понедельника с этой недели.

Ожидаемый результат:

2011-8-8 00:00:00
2011-8-1 00:00:00
2011-7-25 00:00:00
2011-7-18 00:00:00
etc

Ответы [ 3 ]

4 голосов
/ 18 августа 2011

Это должно сделать это:

for ($i=0; $i<52/2; $i++)
echo date('Y-m-d', mktime(1, 0, 0, date('m'), date('d')-date('w')-$i*7+1, date('Y'))) . " 00:00:00\n";

это немного изменилось с Mike's Post , который хочет воскресенье вместо понедельника.

2 голосов
/ 18 августа 2011

Если вы пытаетесь сделать субботу (или любой другой день в этом отношении) первый день недели, чтобы выбрать наборы данных, вот хороший Обходной путь:

<?php  $last_sat=date("z", strtotime("last Saturday")); 
$second_last_sat=date("z", strtotime("last Saturday-1 week"));  ?>

источник: http://www.php.net/manual/en/function.strtotime.php

То, что вы, вероятно, хотите, это

<?php  $last_mon=date("z", strtotime("last Monday ")); 
$second_last_mon=date("z", strtotime("last Monday-1 week"));  ?>

и т.д ..

2 голосов
/ 18 августа 2011

Я бы рекомендовал DateTime::createFromFormat.

До PHP 5.3, вы можете использовать strtotime вместо:

<?php
define('NUM_WEEKS', 10);

$dates = Array();
$dates[] = strtotime('Monday');

for ($i = 0; $i < NUM_WEEKS-1; $i++)
    $dates[] = strtotime('-1 week', $dates[$i]);

foreach ($dates as $date)
    echo strftime('%c', $date) . "\n";
?>

Выход:

Mon Aug 22 00:00:00 2011
Mon Aug 15 00:00:00 2011
Mon Aug  8 00:00:00 2011
Mon Aug  1 00:00:00 2011
Mon Jul 25 00:00:00 2011
Mon Jul 18 00:00:00 2011
Mon Jul 11 00:00:00 2011
Mon Jul  4 00:00:00 2011
Mon Jun 27 00:00:00 2011
Mon Jun 20 00:00:00 2011

Живая демоверсия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...