可能重复:
php date compare
我有一个从mySQL数据库中获取的日期,如下所示:
2011-06-20
我以这种方式获得当天的日期:
$todaydate = date('Y-m-d');
我需要知道的是如何比较两个结果?
如何比较日期并理解,例如,如果从数据库日期或月份或年份传递一周......等等。
谢谢!
答案 0 :(得分:2)
当MySQL已经具有内置功能时,没有必要在PHP上施加这种负担。你应该看一下MySQL的DATEDIFF()
函数:
DATEDIFF()
返回expr1
-expr2
,表示为从一个日期到另一个日期的天数值。expr1
和expr2
是日期或日期和时间表达式。在计算中仅使用值的日期部分。
两个约会给出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以获得天数,依此类推。