我有一个数组会输出一个日期。此日期以mm/dd/yyyy格式输出。我无法控制如何输出,所以我不能改变这一点。PHP - 检查两个日期是否匹配,但忽略当年
Array
(
[date] => 04/06/1989
)
我想用PHP来检查,如果此日期当前日期(今天),但忽略了一年匹配。所以在上面的例子中,我只是想看看今天是否是4月6日。我只是在努力寻找任何文件如何忽略多年。
我有一个数组会输出一个日期。此日期以mm/dd/yyyy格式输出。我无法控制如何输出,所以我不能改变这一点。PHP - 检查两个日期是否匹配,但忽略当年
Array
(
[date] => 04/06/1989
)
我想用PHP来检查,如果此日期当前日期(今天),但忽略了一年匹配。所以在上面的例子中,我只是想看看今天是否是4月6日。我只是在努力寻找任何文件如何忽略多年。
if(substr($date, 0, 5) == date('m/d')) { ...
只适用,如果是肯定的月份和日期都是两个字符长。
您可以将其他日期转换成它的时间戳等同,然后用date()
格式比较。可能是一个更好的方法来做到这一点,但只要原始日期格式化,这将工作。
$today = date('m/Y', time());
$other_date = date('m/Y', strtotime('04/06/1989'));
if($today == $other_date) {
//date matched
}
这将检索日期相同的格式:
$today = date('m/d');
喜你可以比较的日期这样
if(date('m/d',strtotime($array['date']])) == date('m/d',strtotime(date('Y-m-d H:i:s',time()))))
'strtotime(date('Ymd H:i:s',time()))''参数有点疯狂:结果==='time()',或者你可以完全抛弃它,只要做'日期('m/d')'。 – JJJ
在一点点来晚了,但在这里’小号一个没有’不在意其他日期的格式(例如“ 1989年9月26日”)。如果格式改变,它可以派上用场。
if (date('m/d') === date('m/d', strtotime($date))) {
echo 'same as today';
} else {
echo 'not same as today';
}
使用此:
$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
}
这样,你转换日期,这是保存在一个字符串数组(日,月,年)。然后,您可以轻松比较每个数组中包含日期和月份的前两个元素。
您可以使用比较二倍的转换,如果你有个约会。
$的currentdate =的strtotime(日期( 'M/d',时间())); - >返回当前日期,无需关心年份。
// $ someDateTime - 变量指向某个日期几年前,像生日。 $ someDateTimeUNIX = strtotime($ someDateTime) - >转换为unix时间格式。
现在我们将此timeunix转换为仅显示日期和月份的日期: $ dateConversionWithoutYear = date('m/d',$ someDateTimeUNIX); $ dateWithoutRegardForYear = strtotime($ dateConversionWithoutYear); - >瞧!我们现在可以与当年的价值进行比较。
例如:$ dateWithoutRegardForYear == $的currentdate,直接比较
使用subtr($日期,-5)采取的最后5个字符。即使在月份或日期有1个字符时也是如此;-)。 – JNDPNT
@JNDPNT我想你的意思'SUBSTR($日期,0,-5)',但它仍然是行不通的:它会不匹配'日期( 'M/d')',它总是有2个字符。 – JJJ
不,我的意思是substr($ date,-5)。这将从位置长度开始 - 5直到结束如果我没有被高温捕获:p。 – JNDPNT