服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

php有趣的日期逻辑处理

时间:2016-02-14 00:44来源: 作者: 点击:
今天处理了一个很小的问题,需求是这样的,从周一到周日只能看到上周一到上周日的数据,这里直接从数据库里根据 date 字段查询 范围即可,但需要PHP生成 开始日期和结束日期. 最开始,我
 
今天处理了一个很小的问题,需求是这样的,从周一到周日只能看到上周一到上周日的数据,这里直接从数据库里根据 date 字段查询 范围即可,但需要PHP生成 开始日期和结束日期.
 
最开始,我直接这么处理。
 
$start_date = date('Y-m-d' , strtotime("-2 week monday")); 
$end_date = date('Y-m-d' , strtotime("$start_date +6 day")); 
假如日期是 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("+6 day $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("+6 day $startDay")); 
这下就OK 了.
(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容