萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 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 了。

copyright © 萬盛學電腦網 all rights reserved