как я могу получить диапазон дат на прошлой неделе в php?

как я могу получить диапазон дат на прошлой неделе в php?

см. мои коды ниже:

<?php function get_last_week_dates(){ // how can i get the date range last week ? // ex: today is 2014-2-8 // the week date range of last week should be '2014-1-26 ~ 2014-2-1' } ?> 

Вы можете использовать strtotime ()

 $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Ymd",$start_week); $end_week = date("Ymd",$end_week); echo $start_week.' '.$end_week ; 

ОБНОВИТЬ

Изменен код для обработки воскресенья. Если текущий день воскресен, тогда – 1 неделя будет предыдущим воскресеньем, и снова получение предыдущего воскресенья для этого будет продолжаться неделю назад.

 $previous_week = strtotime("-1 week +1 day"); 

Кроме того, если нам нужно найти диапазон current week и next week мы можем сделать так:

Текущая неделя –

 $d = strtotime("today"); $start_week = strtotime("last sunday midnight",$d); $end_week = strtotime("next saturday",$d); $start = date("Ymd",$start_week); $end = date("Ymd",$end_week); 

Следующая неделя –

 $d = strtotime("+1 week -1 day"); $start_week = strtotime("last sunday midnight",$d); $end_week = strtotime("next saturday",$d); $start = date("Ymd",$start_week); $end = date("Ymd",$end_week); 

Просто используйте

 date("m/d/Y", strtotime("last week monday")); date("m/d/Y", strtotime("last week sunday")); 

Он даст дату понедельника и воскресенья на прошлой неделе.

вам нужно использовать функцию strtotime для этого

 <center> <?php function get_last_week_dates() { // how can i get the date range last week ? // ex: today is 2014-2-8 // the week date range of last week should be '2014-1-26 ~ 2014-2-1' $startdate = "last monday"; if (date('N') !== '1') { // it's not Monday today $startdate .= " last week"; } echo "<br />"; $day = strtotime($startdate); echo date('r', $day); echo "<br />"; $sunday = strtotime('next monday', $day) - 1; echo date('r', $sunday); } get_last_week_dates(); ?> </center> 

Ну просто для удовольствия, пытаясь решить это:

 date_default_timezone_set('UTC'); $firstDayOfLastWeek = mktime(0,0,0,date("m"),date("d")-date("w")-7); $lastDayOfLastWeek = mktime(0,0,0,date("m"),date("d")-date("w")-1); echo("Last week began on: ".date("dmY",$firstDayOfLastWeek)); echo("<br>"); echo("Last week ended on: ".date("dmY",$lastDayOfLastWeek)); 

Это должно сделать трюк

 $startWeek = date('Ym-d',strtotime("Sunday Last Week")); $endWeek = date('Ym-d',strtotime("Sunday This Week")); 

это не сработает, если будет работать в понедельник. Это будет последнее воскресенье (накануне) до следующего воскресенья. Таким образом, используя метод Абхика Чакраборти с вышесказанным:

 $startTime = strtotime("last sunday midnight",$previous_week); $endTime = strtotime("next sunday midnight",$startTime); $startDate = date('Ymd 00:00:00',$startTime); $endDate = date('Ymd 23:59:59',$endTime); 

Теперь это даст

 start = 2014-08-10 00:00:00 endDate = 2014-08-17 23:59:59 

Вы можете сделать это.

Сначала получите текущую временную метку и вычитайте число дней, которое вы хотите.

 $curTime = time(); echo date("Ymd",$curTime); echo "<br />"; echo date("Ymd",($curTime-(60*60*24*7))); 
 $lastWeekStartTime = strtotime("last sunday",strtotime("-1 week")); $lastWeekEndTime = strtotime("this sunday",strtotime("-1 week")); $lastWeekStart = date("Ymd",$lastWeekStartTime); $lastWeekEnd = date("Ymd",$lastWeekEndTime); 

Чтобы найти дату начала и дату последней недели, вы можете отслеживать этот код для этого.

Он работает на всех интервалах, чтобы найти интервал времени.

 $Current = Date('N'); $DaysToSunday = 7 - $Current; $DaysFromMonday = $Current - 1; $Sunday = Date('d/m/y', strtotime("+ {$DaysToSunday} Days")); $Monday = Date('d/m/y', strtotime("- {$DaysFromMonday} Days")); 

Если это так, вам нужно изменить его с помощью datatime() вы можете выполнить эту функцию.

 $date = new DateTime(); $weekday = $date->format('w'); $diff = 7 + ($weekday == 0 ? 6 : $weekday - 1); // Monday=0, Sunday=6 $date->modify("-$diff day"); echo $date->format('Ym-d') . ' - '; $date->modify('+6 day'); echo $date->format('Ym-d'); 

Использование функций:

Если вы хотите найти диапазон последних недель с помощью функций, которые вы можете преформировать следующим образом.

Функция:

 // returns last week's range function last_week_range($date) { $ts = strtotime("$date - 7 days"); $start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); return array( date('Ym-d', $start), date('Ym-d', strtotime('next saturday', $start)) ); } 

Применение:

 $today=date(); print_r(last_week_range($today)); 

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

Я знаю, что это старо, но вот гораздо более сжатый способ сделать это:

 $startDate = date("m/d/y", strtotime(date("w") ? "2 sundays ago" : "last sunday")); $endDate = date("m/d/y", strtotime("last saturday")); echo $startDate . " - " . $endDate 

Этот результат даст правильный результат и будет обрабатывать выпуск в понедельник

 <?php $monday = strtotime("last monday"); $monday = date('W', $monday)==date('W') ? $monday-7*86400 : $monday; $sunday = strtotime(date("Ymd",$monday)." +6 days"); $this_week_sd = date("Ymd",$monday); $this_week_ed = date("Ymd",$sunday); echo "Last week range from $this_week_sd to $this_week_ed "; ?>