在PHP中计算两个日期之间的差异
大家好,我在MySql数据库服务器上有几篇文章,每篇文章中的信息内容之一是文章发表时的日期和时间,格式为datetime(例如2010-11-26 21:55:09) 因此,我想使用函数NOW()从SQL server检索实际日期和时间,并计算发布信息的时间是多少秒、分钟、小时或天在PHP中计算两个日期之间的差异,php,mysql,Php,Mysql,大家好,我在MySql数据库服务器上有几篇文章,每篇文章中的信息内容之一是文章发表时的日期和时间,格式为datetime(例如2010-11-26 21:55:09) 因此,我想使用函数NOW()从SQL server检索实际日期和时间,并计算发布信息的时间是多少秒、分钟、小时或天 我不知道如何创建这个php脚本,但我知道它已经准备好了,所以感谢您的帮助。您可以使用date\u diff()函数 类似于 <?php $now = time(); $then = $posttime; $
我不知道如何创建这个php脚本,但我知道它已经准备好了,所以感谢您的帮助。您可以使用date\u diff()函数 类似于
<?php
$now = time();
$then = $posttime;
$diff = date_diff($now,$then);
echo $diff->format('%R%d days'); #change format for different timescales
?>
您将其传递给检查时间(post时间)的unix时间戳,它将返回各种字符串。可以从SQL查询中找到一个简单的解决方案:
SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(post_date) AS seconds_ago FROM posts
这里的文档:通常,您可以在查询中执行这类操作,但MySQL在间隔方面不是很好(使用PostgreSQL很容易)。您可以将其转换为unix时间戳,然后它将给出两个日期之间的秒数:
SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(your_datetime_column);
我考虑过DATEDIFF,但它只返回两个日期之间的天数
例如,您可以在PHP中使用DateTime类执行此操作:
$date1 = new DateTime();
$date2 = new Datetime('2010-11-26 12:00:00');
var_dump($date1->diff($date2));
(如果你不喜欢OOP,有一种程序化的方法可以做到这一点。)如果我不能使用RDBMS,这绝对是我会使用的解决方案。DateTime::diff返回一个DateInterval对象,其中包含两个日期之间的秒数、分钟数、小时数、天数等 您还可以使用PHP中的时间戳:
$num_sec = time() - strtotime('2010-11-26 12:00:00');
这将返回与SQL查询相同的内容。正如billythekid所说,如果使用PHP5.3+,则可以使用
date\u diff()
函数,如果不使用,则有多种方法。如其他海报所示。如果您想知道划分为“hours:mins:secs”层次结构的时间,MySQL中最快的方法是使用
如果您希望它是秒,那么可以使用MySQL或PHP中的unix时间戳功能,您可以使用
strotime()
将MySQL日期快速转换为PHP。实际上,我自己也需要在PHP中这样做,尽管billythekid的帖子方向正确,但它没有做到。我已经最小化了代码,但应该清楚的是,第二个参数来自一个列类型为DATETIME
的数据库
<?php
$interval = date_diff(date_create(date('Y-m-d H:i:s')), date_create($row1['date']));
echo $interval->format('%R%a days');
//Database: 2019-02-22
//PHP's date: 2018-07-07
//Result: +306 days
?>
需要注意的一件事是DateTime->diff是一个5.3+功能,因此如果您使用的是5.2.x,它将不适用于您,您必须使用SQL或将时间转换为PHP中的unix时间戳并在那里执行。先生,您刚刚度过了我的一天。我需要这样的东西已经有一段时间了,现在我可以完全用PHP计算两个时间戳之间的分钟数。如果有人感兴趣,或者想让它更有效率,我已经把它作为一个要点:我不认为date_diff需要时间()作为输入。它需要DateTime对象。因此,您需要执行如下操作:$date1=date\u create(“2013-03-15”)代码>$date2=创建日期(“2013-12-12”)代码>$diff=date\u diff($date1,$date2)代码>
SELECT TIMEDIFF(NOW(), '2010-11-26 12:00:00');
<?php
$interval = date_diff(date_create(date('Y-m-d H:i:s')), date_create($row1['date']));
echo $interval->format('%R%a days');
//Database: 2019-02-22
//PHP's date: 2018-07-07
//Result: +306 days
?>