好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php 有趣的日期逻辑处理 - php日期

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 了.

查看更多关于php 有趣的日期逻辑处理 - php日期的详细内容...

  阅读:54次