我在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