php strtotime() 值未按预期工作
php strtotime() values not working as expected
此代码一直告诉我 $lasUpdate 总是大于 $yesterday,无论我对 $yesterday 结果所做的更改是什么(12/31/14 大于 01/19/15,无需更新)。我觉得我错过了一些简单的东西提前谢谢你非常感谢。
$result['MAX(Date)']='12/31/14';
$lastUpdate = date('m/d/y', strtotime($result['MAX(Date)']));
$yesterday = date('m/d/y', strtotime('-1 day'));
if($lastUpdate<$yesterday){echo $lastUpdate.'is less '.$yesterday.'<br>'.'update needed';}
if($lastUpdate>=$yesterday){echo $lastUpdate.'is greater than '.$yesterday.'<br>'.'no update needed';
12/31/14 is greater than 01/19/15
因为1
大于0
。如果您想以这种方式比较日期,则需要以不同的格式(从最高有效数字到最低有效数字)存储它们,例如 Ymd
.
或者将您制作的时间戳存储在不同的变量中并进行比较。
您已成为 PHP 类型字符串的牺牲品。 date
函数具有字符串的 return 值。您 不能 比较字符串格式的日期,因为 PHP 会在比较的上下文中将字符串转换为整数。唯一的例外是字符串是否为有效数字。本质上,你在做:
if ('12/31/14' < '01/19/15') { ... }
if ('12/31/14' >= '01/19/15') { ... }
哪个 PHP 类型变戏法:
if (12 < 1) { ... }
if (12 >= 1) { ... }
和 returns false
在第一个实例中,true
在第二个实例中。
您的解决方案是不将 date
包装在 strtotime
函数周围,而仅使用 strtotime
函数本身的 returned 时间戳直接比较 UNIX 时间戳:
$lastUpdate = strtotime($result['MAX(Date)']);
$yesterday = strtotime('-1 day');
然而,当您将 echo
返回给用户时,您将希望使用 date
,以便他们可以使用有意义的日期字符串。
尝试这样的事情:
$lastUpdate = strtotime($result['MAX(Date)']);
$yesterday = strtotime('-1 day');
if ($lastUpdate < $yesterday) { /* do Something */ }
此代码一直告诉我 $lasUpdate 总是大于 $yesterday,无论我对 $yesterday 结果所做的更改是什么(12/31/14 大于 01/19/15,无需更新)。我觉得我错过了一些简单的东西提前谢谢你非常感谢。
$result['MAX(Date)']='12/31/14';
$lastUpdate = date('m/d/y', strtotime($result['MAX(Date)']));
$yesterday = date('m/d/y', strtotime('-1 day'));
if($lastUpdate<$yesterday){echo $lastUpdate.'is less '.$yesterday.'<br>'.'update needed';}
if($lastUpdate>=$yesterday){echo $lastUpdate.'is greater than '.$yesterday.'<br>'.'no update needed';
12/31/14 is greater than 01/19/15
因为1
大于0
。如果您想以这种方式比较日期,则需要以不同的格式(从最高有效数字到最低有效数字)存储它们,例如 Ymd
.
或者将您制作的时间戳存储在不同的变量中并进行比较。
您已成为 PHP 类型字符串的牺牲品。 date
函数具有字符串的 return 值。您 不能 比较字符串格式的日期,因为 PHP 会在比较的上下文中将字符串转换为整数。唯一的例外是字符串是否为有效数字。本质上,你在做:
if ('12/31/14' < '01/19/15') { ... }
if ('12/31/14' >= '01/19/15') { ... }
哪个 PHP 类型变戏法:
if (12 < 1) { ... }
if (12 >= 1) { ... }
和 returns false
在第一个实例中,true
在第二个实例中。
您的解决方案是不将 date
包装在 strtotime
函数周围,而仅使用 strtotime
函数本身的 returned 时间戳直接比较 UNIX 时间戳:
$lastUpdate = strtotime($result['MAX(Date)']);
$yesterday = strtotime('-1 day');
然而,当您将 echo
返回给用户时,您将希望使用 date
,以便他们可以使用有意义的日期字符串。
尝试这样的事情:
$lastUpdate = strtotime($result['MAX(Date)']);
$yesterday = strtotime('-1 day');
if ($lastUpdate < $yesterday) { /* do Something */ }