程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP判斷某一天在指定日期的前還是後

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

編輯:關於PHP編程

有這麼一個需求,指定日期是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) {
	echo '已經過了';
} elseif ($thismonth == $month && $thisday == $day && $thisyear == $year) {
	echo '就是今天了';
} else {
	echo '還沒到';
}
?>

下面是帶注釋的代碼:

//你還需要知道的另一個變量是年份,不過依你的意思應該是當年。
$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) {
  //同年
  if($dateMonth == $eventMonth) {
    //同月
    if($dateDay == $eventDay) {
      //同一天,就是當前日期就是事件觸發的日期
    } elseif($dateDay > $eventDay) {
      //事件已經過期了
    } else {
      //事件觸發日期還沒到
    }
  } else {
    //之前或之後,再需要詳細判斷可以在這裡比較哪個月份大
  }
} else {
  //之前或之後,再需要詳細判斷可以在這裡比較哪個年份大
}
//其實這種比較是最簡單的邏輯判斷,如果你在記錄時間觸發日期時記錄的是 unix 時間戳,這裡可以直接進行時間戳比較不過需要處理一下,因為時間戳是精確到秒的
//或者把你記錄的日期及其後一天直接轉化成 unix 時間戳,時分秒都用 0 ,和當前時間戳比較,細節判斷就自己去分析吧,可用函數去查查手冊裡面 strtotime() ,時間相關函數參數很多,不過用過幾次就熟悉了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved