我如何检查如果我的日期有一定的一年,通过php检索所有日期后


How do I check if my dates have a certain year, after retrieving all dates via 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'];
谁能帮我解决这个问题?

感谢您的宝贵时间。

我将使用substr()来提取最后4个字符作为您的年份

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

伪代码的文字实现使用strpos:

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

然而,Dagon的"只检查最后四位数字"的答案,或者下面使用substr_compare的替代答案,可能会产生更少的误报:

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

注意,我在这里使用了修剪,以防您的日期末尾有虚假的空白。

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

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

如果您只想按年份检查,则:

    $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