PHP 日期不太合适
PHP dates not quite working
对 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" today
is less than than date extra early
您可以比较 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';
您需要以正确的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");
}
在这两种情况下它都打印
today is greater than date extra early
您确实必须为 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
对 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" today is less than than date extra early
您可以比较 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';
您需要以正确的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");
}
在这两种情况下它都打印
today is greater than date extra early
您确实必须为 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