使用带有php日期的逻辑运算符无法正常工作。能够计算2016年是在2017年之前,但是没能意识到第1个月在本月的第4个之前。
我已经注意到这种错误了一段时间:如何最好地修复并避免它?
$date_extra_early = date("2017-01-1 07:30:00");
$today = date("Y-m-d H:i:s");
var_dump($today);
var_dump($date_extra_early);
if ($today>$date_extra_early)
echo("today is greater than date extra early\n");
else echo("today is less than date extra early\n");
输出
string(19)“2017-01-04 14:50:32”string(18)“2017-01-1 07:30:00”今天 是否早于额外的日期
答案 0 :(得分:3)
您可以比较DateTime对象以支持字符串(后者由date()
返回)。 ==, <, >, <=, >=
的逻辑操作与使用DateTime对象的魅力一样。此外,DateTime构造函数可以理解许多不同的输入格式,并且还可以帮助处理格式错误的输入。
$earlydate = new DateTime('2017-01-1 07:30:00');
$today = new DateTime('now');
if($today > $earlydate)
echo 'today is greater than date extra early';
else
echo 'today is less than date extra early';
答案 1 :(得分:1)
您需要以正确的datetime
格式
$date_extra_early = date("2017-01-01 07:30:00");
//^missing a leading 0 here
或者您可以将日期转换为整数和比较
if (strtotime($today)>strtotime($date_extra_early)) {
echo("today is greater than date extra early\n");
} else {
echo("today is less than date extra early\n");
}
在这两种情况下都打印
今天超过了提前的日期
答案 2 :(得分:1)
您确实必须使用date()的正确格式。 在这种情况下,您缺少1(日)前面的前导0
$date_extra_early = date("2017-01-01 07:30:00");
$today = date("Y-m-d H:i:s");
var_dump($today);
var_dump($date_extra_early);
if ($today>$date_extra_early)
echo("today is greater than date extra early\n");
else
echo("today is less than date extra early\n");
输出:
string '2017-01-04 22:00:57' (length=19)
string '2017-01-01 07:30:00' (length=19)
today is greater than date extra early