有這麼乙個需求,指定日期是12月12日,在12月12號前我要執行a事件,在其後要執行b事件,怎樣判斷今天是在12月12日的前還是後?
程式如下:
<?php
$year = 2010;
$month = 12; // 月
$day = 12; // 日
$timeoffset = 8; // 與格林尼治時間 gmt 的時差
list($thisyear, $thismonth, $thisday) = explode('-', date('y-n-j', time() + $timeoffset * 3600));
if(($thismonth > $month) || ($thismonth == $month && $thisday > $day) || $thisyear > $year) elseif ($thismonth == $month && $thisday == $day && $thisyear == $year) else
?>
下面是帶注釋的**:
//你還需要知道的另乙個變數是年份,不過依你的意思應該是當年。
$timestamp = time();
$dateyear = date('y', $timestamp);//當前年,依當前需要可以不需要比較,但有時也許會用到,比如你的記錄不是當年要處理的
$datemonth = date('n', $timestamp);//當前月份數字,沒有前導零
$dateday = date('j', $timestamp);//月份中的第幾天,沒有前導零
//剩下的就是比較了,比如你要比較的日期是 2007-03-01
$eventdate = '2007-03-01';
$eventdatearr = explode('-', $eventdate);
$eventyear = intval($eventdatearr[0]);
$eventmonth = intval($eventdatearr[1]);
$eventday = intval($eventdatearr[2]);
//上面是年月日的拆分,根據實際情況可以調整,如果你直接可以得到就不需要這樣取了。
//之後剩下的就是比較了,先比較年
if($dateyear == $eventyear) elseif($dateday > $eventday) else
} else
} else
//其實這種比較是最簡單的邏輯判斷,如果你在記錄時間觸發日期時記錄的是 unix 時間戳,這裡可以直接進行時間戳比較不過需要處理一下,因為時間戳是精確到秒的
//或者把你記錄的日期及其後一天直接轉化成 unix 時間戳,時分秒都用 0 ,和當前時間戳比較,細節判斷就自己去分析吧,可用函式去查查手冊裡面 strtotime() ,時間相關函式引數很多,不過用過幾次就熟悉了。
獲取指定日期的前一天日期
看部落格的時候,看到一篇文章,是獲取指定日期的前一天日期,所以自己也寫了乙個方法,如下 1 2 功 能 根據年月得到指定月份的天數 3 參 數 nyear 年 4 nmonth 月 5 返 回 值 最大天數 6 創 建 人 maojw78 9function getdaysofmonth nyear...
獲取指定日期的後一天或前一天的日期
思想 1.獲取乙個日曆的例項 2.將指定的時間格式化成date型別 3.獲取該date的int型別的時間天數day 4.將day 或者 1 5.根據計算後的day轉化成date型別 6.轉化為易懂的格式 獲得指定日期的後一天 引數無論是y m d 還是y m d h m s 返回值都只有yyyy m...
指定日期最後一天的表示方法
select curdate 獲取當前日期 select last day curdate 獲取當月最後一天。select date add curdate interval day curdate 1day 獲取本月第一天 select date add curdate day curdate 1...