zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php中一个有意思的日期逻辑处理

PHP日期逻辑 处理 一个 有意思
2023-06-13 09:14:33 时间
今天处理了一个很小的问题。
需求是这样的,从周一到周日只能看到上周一到上周日的数据。
这里直接从数据库里根据date字段查询范围即可。
但需要PHP生成开始日期和结束日期。

最开始,我直接这么处理。
复制代码代码如下:

$start_date=date("Y-m-d",strtotime("-2weekmonday"));
$end_date=date("Y-m-d",strtotime("$start_date+6day"));

假如日期是2011-07-19,$start_date=2011-07-11这样处理没有问题。
如果日期是2011-07-18,$start_date则会等于2011-07-04,还活在上周。

于是换了种方法
复制代码代码如下:

$getWeekDay=date("w");
$startDay=date("Y-m-d",mktime(0,0,0,date("m"),date("d")-$getWeekDay+1-7,date("Y")));
$endDay=date("Y-m-d",strtotime("+6day$startDay"));

假如日期是2011-07-19,$start_date=2011-07-11这样处理没有问题,和我们期望的一样。
如果日期是2011-07-24,我们期望的$start_date是2011-07-11,但实际返回的是2011-07-18。

不得已,我再改了下方法
复制代码代码如下:
$getWeekDay=date("N");
$startDay=date("Y-m-d",mktime(0,0,0,date("m"),date("d")-$getWeekDay+1-7,date("Y")));
$endDay=date("Y-m-d",strtotime("+6day$startDay"));

这下就OK了。