PHP判斷某一天在指定日期的前還是後

2021-06-18 19:02:05 字數 1477 閱讀 1027

有這麼乙個需求,指定日期是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...