2011-09-26 166 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,直接比较

相关问题