PHP日期不太合适

时间:2017-01-04 20:52:24

标签: php apache time logical-operators

使用带有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”今天   是否早于额外的日期

3 个答案:

答案 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';

另请参阅:http://php.net/manual/en/class.datetime.php

答案 1 :(得分:1)

您需要以正确的datetime格式

指定日期
$date_extra_early = date("2017-01-01 07:30:00");
                                //^missing a leading 0 here

demo

或者您可以将日期转换为整数和比较

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");
}

在这两种情况下都打印

  

今天超过了提前的日期

demo

答案 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