在通过php检索所有日期后,如何检查我的日期是否有某一年?

时间:2016-08-24 01:45:59

标签: 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'];

有人可以帮我解决这个问题吗?

感谢您的时间。

4 个答案:

答案 0 :(得分:2)

我会使用substr()来提取作为你一年的最后4个字符

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

答案 1 :(得分: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,因为你的日期最后会出现虚假的白色空间。

答案 2 :(得分: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

答案 3 :(得分:1)

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

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