2016-08-24 109 views
1

我取回我的约会像这样在我的PHP查询:如何在通过php检索所有日期后检查我的日期是否有特定年份?

DATE_FORMAT(items.r_date, '%M %D, %Y') as r_date 

然后显示它是这样,例如:

January 1st, 1934 

但是,如果今年是1111,我想让日期说一些习惯。

如(我知道这是不是真正的代码,只是想解释什么,我想做的事:

if ($row['r_date'] CONTAINS '*1111*') { $r_date = "my custom message"; } else $r_date = $row['r_date']; 

谁能帮我解决这个

谢谢你的时间?

+0

谢谢大家,当他们一切正常时,我该如何选择答案?! – jotty

+1

不用理会日期,因为你只需要处理一个字符串,并且不需要他们带来的“权力”。对于2个答案,你会检查整个字符串,你只能检查最后4位数字。 – 2016-08-24 02:03:42

回答

1

字面上的执行你的伪代码使用strpos

if (false !== strpos($row['r_date'], '1111')) { 
    $r_date = "my custom message"; 
} else { 
    $r_date = $row['r_date']; 
} 

然而,“只检查最后四位数字” answer by Dagon,或替代一个低于使用substr_compare,可能会产生较少的误报:

if (0 === substr_compare(rtrim($row['r_date']), '1111')) 
    $r_date = "my custom message"; 
} else { 
    $r_date = $row['r_date']; 
} 

注意我在事件中使用trim在这里你的约会假白 - 最后的空间。

+0

那么我得到一半的积分呢? :-) – 2016-08-24 21:20:37

1

如果只想要通过其年度检查,则:

$mydate = date('Y', strtotime($row['r_date'])) 
    if ($mydate == '1111' or $mydate == '1970') { 
    echo "something"; 
    }else{ 
    echo "else" 
    } 

注:
Y = 4位数的年份。
y = 2位数年份。
1970年是系统较低的年份,所以如果您的年份低于1970年,系统将默认为1970年。

strtotime

1

您可以使用DateTime Class。 我没有测试,但它应该是类似的东西,只是更改日期格式:

$date = DateTime::createFromFormat("m-d-Y", "02-01-1111"); 
if($date->format("Y")=="1111") 
    echo "your custom message"; 
2

我会用SUBSTR()中提取的最后4个字符是您今年

if (substr($row['r_date'], -4) != '1111') { 
    $r_date = $row['r_date']; } 
else { 
    $r_date = "my custom message"; 
}