PHP比较日期

时间:2011-06-20 00:24:36

标签: php date compare

  

可能重复:
  php date compare

我有一个从mySQL数据库中获取的日期,如下所示:

2011-06-20

我以这种方式获得当天的日期:

$todaydate = date('Y-m-d');

我需要知道的是如何比较两个结果?

如何比较日期并理解,例如,如果从数据库日期或月份或年份传递一周......等等。

谢谢!

6 个答案:

答案 0 :(得分:2)

当MySQL已经具有内置功能时,没有必要在PHP上施加这种负担。你应该看一下MySQL的DATEDIFF()函数:

  

DATEDIFF()返回expr1 - expr2,表示为从一个日期到另一个日期的天数值。 expr1expr2是日期或日期和时间表达式。在计算中仅使用值的日期部分。

两个约会给出7天差异的例子可能是:

mysql> select datediff('2011-06-18','2011-06-25');
+-------------------------------------+
| datediff('2011-06-18','2011-06-25') |
+-------------------------------------+
|                                  -7 | 
+-------------------------------------+

这意味着第一个日期发生在第一个日期之后的7天; 之前的7天。如果让两个参数切换到位,结果将为正7。

答案 1 :(得分:1)

考虑使用UNIX_TIMESTAMP怎么样?它使用了经过时间的概念。

答案 2 :(得分:1)

比较两个或多个日期的“旧”方法是使用strtotime()函数将其转换为unix时间戳(float中的秒数)。例如:

if((strtotime('2011-05-10') - strtotime('2011-05-01')) > 604800)
{
    echo('A week has passed');
}

if((strtotime('2011-06-10') - strtotime('2011-05-01')) > 2629743)
{
    echo('A month has passed');
}

或者“新”方法是使用与PHP 5.2或更新版本捆绑在一起的DateTime类。看看http://php.net/manual/en/book.datetime.php

答案 3 :(得分:0)

当然date_diff有很多例子。

答案 4 :(得分:0)

你需要考虑你正在寻找什么。

  • 您是否希望过滤超过一周的日期?您可以在SQL上进行比较,并且不会使PHP与日期比较负担。

  • 您想要日期差异吗?同样,我建议将它放在SQL中,只显示结果。

答案 5 :(得分:0)

这将为您提供两个日期之间的秒数:

<?php
$time = '2011-06-20';
$timeDiff = time() - strtotime($time);
echo $timeDiff;
?>

您可以将此值除以86,400以获得天数,依此类推。