PHP日和月比较

PHP日和月比较,php,date,Php,Date,我尝试执行以下操作:使用会话变量$date\u from和$date\u to,标记并与这些日期间隔进行比较。这就是我到目前为止所做的: 这是我正在使用的格式,只有天和月: $date1 = new DateTime('28-04-2014'); $seasonStart = date_format($date1, 'd-m'); 以今天的日期为例,28-03-2014,做同样的事情,将其存储在变量中,if循环中的条件将是 if (28-03 < 28-04) echo "it wor

我尝试执行以下操作:使用会话变量
$date\u from
$date\u to
,标记并与这些日期间隔进行比较。这就是我到目前为止所做的:

这是我正在使用的格式,只有天和月:

$date1 = new DateTime('28-04-2014');

$seasonStart = date_format($date1, 'd-m');
以今天的日期为例,
28-03-2014
,做同样的事情,将其存储在变量中,if循环中的条件将是

if (28-03 < 28-04)
echo "it works" 
if(28-03<28-04)
回声“它起作用”
然而,这不起作用。我注意到它只比较日期,而不比较月份 如果我将
28-03更改为01-08
,它将起作用,这显然是不正确的。

您正在比较字符串(以及第二个示例中的整数),而不是日期。这就是为什么你看到了你正在看到的结果。幸运的是,在PHP中比较日期很容易,因为DateTime对象是可比较的。不需要事先进行格式化

$date1 = new DateTime('28-04-2014');
$date2 = new DateTime();
if ($date1 > $date2) {
    // do something
}

您可以将unix时间与
strotime
函数一起使用

$time1 = strtotime("28 March 2014");
$time2 = strtotime("28 February 2014");
if($time1 > $time2){ //stuff }

我不确定这是否是最成功的方法,但我可能会自己这样做。

这是最简单的解决方案,我也尝试过,但是datetime中的“年”部分有点问题。你知道有没有办法保留DateTime函数但不使用年份部分?年份部分有什么问题吗?我们也许可以解决这个问题。如果有人在同一天预订了房间,但明年$date2将是2015年4月28日,这比$date1大,条件不起作用。日期比较不作为字符串进行。PHP将它们作为日期进行比较。不要把日期想象成一个字符串。这是误导,问题是。与上面的代码相同,只是年份不同:$date1=newdatetime('27-04-2013')$date2=新的日期时间();如果($date1>$date2){echo“起作用”}否则{echo“失败”}由于年份的原因,它将失败。如果可以修改这些参数,那么这个例子#2可能会很有用。