Как я могу получить диапазон дат на прошлой неделе в 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'
}
?>
Ответы
Ответ 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("Y-m-d",$start_week);
$end_week = date("Y-m-d",$end_week);
echo $start_week.' '.$end_week ;
UPDATE
Изменен код для обработки воскресенья. Если текущий день воскресен, тогда - 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("Y-m-d",$start_week);
$end = date("Y-m-d",$end_week);
Следующая неделя -
$d = strtotime("+1 week -1 day");
$start_week = strtotime("last sunday midnight",$d);
$end_week = strtotime("next saturday",$d);
$start = date("Y-m-d",$start_week);
$end = date("Y-m-d",$end_week);
Ответ 2
Просто используйте
date("m/d/Y", strtotime("last week monday"));
date("m/d/Y", strtotime("last week sunday"));
Он будет указывать дату на прошлой неделе в понедельник и воскресенье.
Ответ 3
вам нужно использовать функцию 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 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>
Ответ 4
Ну просто для удовольствия, пытаясь решить это:
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("d.m.Y",$firstDayOfLastWeek));
echo("<br>");
echo("Last week ended on: ".date("d.m.Y",$lastDayOfLastWeek));
Ответ 5
Это должно сделать трюк
$startWeek = date('Y-m-d',strtotime("Sunday Last Week"));
$endWeek = date('Y-m-d',strtotime("Sunday This Week"));
это не сработает, если будет работать в понедельник. Это будет последнее воскресенье (накануне) до следующего воскресенья. Таким образом, используя метод Абхика Чакраборти с приведенным выше:
$startTime = strtotime("last sunday midnight",$previous_week);
$endTime = strtotime("next sunday midnight",$startTime);
$startDate = date('Y-m-d 00:00:00',$startTime);
$endDate = date('Y-m-d 23:59:59',$endTime);
Теперь это даст
start = 2014-08-10 00:00:00
endDate = 2014-08-17 23:59:59
Ответ 6
Я знаю, что это старый, но здесь гораздо более сжатый способ сделать это:
$startDate = date("m/d/y", strtotime(date("w") ? "2 sundays ago" : "last sunday"));
$endDate = date("m/d/y", strtotime("last saturday"));
echo $startDate . " - " . $endDate
Ответ 7
Вы можете сделать это.
Сначала получите текущую временную метку и вычитайте число дней, которое вы хотите.
$curTime = time();
echo date("Y-m-d",$curTime);
echo "<br />";
echo date("Y-m-d",($curTime-(60*60*24*7)));
Ответ 8
$lastWeekStartTime = strtotime("last sunday",strtotime("-1 week"));
$lastWeekEndTime = strtotime("this sunday",strtotime("-1 week"));
$lastWeekStart = date("Y-m-d",$lastWeekStartTime);
$lastWeekEnd = date("Y-m-d",$lastWeekEndTime);
Ответ 9
Чтобы найти дату начала и дату последней недели, вы можете отслеживать этот код для этого.
Он работает на всех интервалах, чтобы найти интервал даты.
$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('Y-m-d') . ' - ';
$date->modify('+6 day');
echo $date->format('Y-m-d');
Использование функций:
Если вы хотите найти диапазон последних недель с помощью функций, которые вы можете выполнить таким образом.
Функция:
// returns last week range
function last_week_range($date) {
$ts = strtotime("$date - 7 days");
$start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
return array(
date('Y-m-d', $start),
date('Y-m-d', strtotime('next saturday', $start))
);
}
Применение:
$today=date();
print_r(last_week_range($today));
Все приведенные выше функции возвращают диапазон последней недели независимо от начального дня недели.
Ответ 10
Этот результат даст правильный результат и будет обрабатывать проблему в понедельник
<?php
$monday = strtotime("last monday");
$monday = date('W', $monday)==date('W') ? $monday-7*86400 : $monday;
$sunday = strtotime(date("Y-m-d",$monday)." +6 days");
$this_week_sd = date("Y-m-d",$monday);
$this_week_ed = date("Y-m-d",$sunday);
echo "Last week range from $this_week_sd to $this_week_ed ";
?>
Ответ 11
Большинство из предложенных решений были отключены на один день.
Если вы хотите с воскресенья по субботу на прошлой неделе, это способ сделать это.
$start = date("Y-m-d",strtotime("last sunday",strtotime("-1 week")));
$end = date("Y-m-d",strtotime("saturday",strtotime("-1 week")));
echo $start. " to ".$end;