php 7 — массив дат недели с воскресенья по субботу в переполнении стека

для получения дат от воскресенья до субботы на неделю календаря я использую этот код в php:

$dt = strtotime(date('Y-m-d'));

$res['start'] = date('N', $dt)==1 ? date('Y-m-d', $dt) : date('Y-m-d', strtotime('last sunday', $dt));

$res['end'] = date('N', $dt)==7 ? date('Y-m-d', $dt) : date('Y-m-d', strtotime('saturday', $dt));

$day_of_week = date('N', strtotime($res['start']));


$given_date = strtotime( $res['end'] );

$first_of_week =  date('Y-m-d', strtotime("- {$day_of_week} day", $given_date));

$first_of_week = strtotime($first_of_week);

for($i=1 ;$i<=7; $i++)
{
$datess[] = date('Y-m-d', strtotime("+ {$i} day", $first_of_week));

$week_array[] = date('m/d', strtotime("+ {$i} day", $first_of_week));
print_r($datess);
}
exit;

после этого я получаю массив с 2018-10-29 по 2018-11-04, но я хочу массив с 2018-11-04 2018-11-10, что я делаю неправильно, в этом коде может кто-нибудь, пожалуйста, дайте мне знать или исправить меня, где я делаю неправильно в этом коде

0

Решение

Вы предполагаете, что воскресенье — номер дня недели? 1? И суббота 7?

Если это так, воскресенье 7 и суббота 6, Итак, ваш код будет выглядеть так:

$dt = strtotime(date('Y-m-d'));

$res['start'] = date('N', $dt) == 7 ? date('Y-m-d', $dt) : date('Y-m-d', strtotime('last sunday', $dt));

$res['end'] = date('N', $dt) == 6 ? date('Y-m-d', $dt) : date('Y-m-d', strtotime('saturday', $dt));

$day_of_week = date('N', strtotime($res['start']));


$given_date = strtotime($res['end']);

$first_of_week =  date('Y-m-d', strtotime("- {$day_of_week} day", $given_date));

$first_of_week = strtotime($first_of_week);

for ($i = 1 ; $i <= 7; $i++) {
$datess[] = date('Y-m-d', strtotime("+ {$i} day", $first_of_week));

$week_array[] = date('m/d', strtotime("+ {$i} day", $first_of_week));
print_r($datess);
}
1

Другие решения

Одно решение с использованием мощных функций даты PHP время Дата а также StrToTime

<?php

if (date('D') == 'Sun') {
$lsTimestamp = time();
} else {
$lsTimestamp = strtotime('last Sunday');
}

$dates = [date('Y-m-d', $lsTimestamp)];
for ($i = 1; $i <= 6; $i++) {
$dates[] = date('Y-m-d', strtotime('+' . $i . ' day', $lsTimestamp));
}

var_dump($dates);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector