PHP - 日期功能 - 查找前一周

Gub*_*ooo 5 php date

在我的申请中,一周定义为从星期一上午12:00:00到星期日晚上11:59:59

每当用户访问我的网站时 - 我需要查找前几周的日期范围,并根据该日期显示结果.这听起来很简单,但我迷路了.

为您提供方案 - - 3月1日星期一12:00:00 AM至3月7日星期日12:59:59 PM是一周.

现在,当用户在3月8日或3月10日或3月12日访问该网站时 - 根据当前日期,我应该能够获得上一周的日期范围,即开始日期3月1日和结束日期3月7日.

但是,如果用户访问网站说3月16日 - 我需要的日期范围是3月8日到3月15日.

我怎么能用PHP做到这一点.谢谢

Luk*_*ský 8

您可以尝试使用时间戳,但是时区更改会变得混乱(例如,CET - > CEST).我会用这个DateTime班:

$d = new DateTime();
$weekday = $d->format('w');
$diff = 7 + ($weekday == 0 ? 6 : $weekday - 1); // Monday=0, Sunday=6
$d->modify("-$diff day");
echo $d->format('Y-m-d') . ' - ';
$d->modify('+6 day');
echo $d->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)


nic*_*ckf 8

这个strtotime功能非常方便:

$mondayStr = "last monday";
if (date('N') !== '1') {  // it's not Monday today
    $mondayStr .= " last week";
}

$monday = strtotime($mondayStr);
echo date('r', $monday);    // Mon, 22 Feb 2010 00:00:00 +1000

$sunday = strtotime('next monday', $monday) - 1;
echo date('r', $sunday);    // Sun, 28 Feb 2010 23:59:59 +1000
Run Code Online (Sandbox Code Playgroud)