2011-09-26 171 views
1

我有一個數組會輸出一個日期。此日期以mm/dd/yyyy格式輸出。我無法控制如何輸出,所以我不能改變這一點。PHP - 檢查兩個日期是否匹配,但忽略當年

Array 
(
    [date] => 04/06/1989 
) 

我想用PHP來檢查,如果此日期當前日期(今天),但忽略了一年匹配。所以在上面的例子中,我只是想看看今天是否是4月6日。我只是在努力尋找任何文件如何忽略多年。

回答

2
if(substr($date, 0, 5) == date('m/d')) { ... 

只適用,如果是肯定的月份和日期都是兩個字符長。

+0

使用subtr($日期,-5)採取的最後5個字符。即使在月份或日期有1個字符時也是如此;-)。 – JNDPNT

+0

@JNDPNT我想你的意思'SUBSTR($日期,0,-5)',但它仍然是行不通的:它會不匹配'日期( 'M/d')',它總是有2個字符。 – JJJ

+0

不,我的意思是substr($ date,-5)。這將從位置長度開始 - 5直到結束如果我沒有被高溫捕獲:p。 – JNDPNT

-1

您可以將其他日期轉換成它的時間戳等同,然後用date()格式比較。可能是一個更好的方法來做到這一點,但只要原始日期格式化,這將工作。

$today = date('m/Y', time()); 
$other_date = date('m/Y', strtotime('04/06/1989')); 
if($today == $other_date) { 
    //date matched 
} 
0

這將檢索日期相同的格式:

$today = date('m/d'); 
-1

喜你可以比較的日期這樣

if(date('m/d',strtotime($array['date']])) == date('m/d',strtotime(date('Y-m-d H:i:s',time())))) 
+0

'strtotime(date('Ymd H:i:s',time()))''參數有點瘋狂:結果==='time()',或者你可以完全拋棄它,只要做'日期('m/d')'。 – JJJ

1

在一點點來晚了,但在這裏’小號一個沒有’不在意其他日期的格式(例如「 1989年9月26日」)。如果格式改變,它可以派上用場。

if (date('m/d') === date('m/d', strtotime($date))) { 
    echo 'same as today'; 
} else { 
    echo 'not same as today'; 
} 
0

使用此:

$my_date = YOUR_ARRAY[date]; 

$my_date_string = explode('/', $my_date); 

$curr_date = date('m,d,o'); 
$curr_date_string = explode(',', $date); 

if (($my_date_string[0] == $curr_date_string[0]) && ($my_date_string[1] == $curr_date_string[1])) 
{ 
    DO IT 
} 

這樣,你轉換日期,這是保存在一個字符串數組(日,月,年)。然後,您可以輕鬆比較每個數組中包含日期和月份的前兩個元素。

0

您可以使用比較二倍的轉換,如果你有個約會。

$的currentdate =的strtotime(日期( 'M/d',時間())); - >返回當前日期,無需關心年份。

// $ someDateTime - 變量指向某個日期幾年前,像生日。 $ someDateTimeUNIX = strtotime($ someDateTime) - >轉換爲unix時間格式。

現在我們將此timeunix轉換爲僅顯示日期和月份的日期: $ dateConversionWithoutYear = date('m/d',$ someDateTimeUNIX); $ dateWithoutRegardForYear = strtotime($ dateConversionWithoutYear); - >瞧!我們現在可以與當年的價值進行比較。

例如:$ dateWithoutRegardForYear == $的currentdate,直接比較

相關問題