PHP日期-时间差格式

PHP日期-时间差格式,php,mysql,date,time,Php,Mysql,Date,Time,我在数据库中保存了日期和时间,格式如下:2016-04-03 12:54:11 基本上,这个日期和时间戳表示创建某个对象的确切日期和时间。我要做的是显示第二个日期和时间,这是自第一个时间戳以来的确切天数 因此,如果数据库中的时间戳是2016-04-03 12:54:11,而今天的日期和时间是2016-04-04 12:54:11,它将显示:过期时间:1天 到目前为止,我已经: <?PHP $dateCreated = mysql_result(mysql_query("SQL to sto

我在数据库中保存了日期和时间,格式如下:
2016-04-03 12:54:11

基本上,这个日期和时间戳表示创建某个对象的确切日期和时间。我要做的是显示第二个日期和时间,这是自第一个时间戳以来的确切天数

因此,如果数据库中的时间戳是
2016-04-03 12:54:11
,而今天的日期和时间是
2016-04-04 12:54:11
,它将显示:
过期时间:1天

到目前为止,我已经:

<?PHP $dateCreated = mysql_result(mysql_query("SQL to stored date and time"),0);
                $dateNow = time();

                $dateDifference = abs(strtotime($dateCreated) - strtotime($dateNow));

                $years = floor($dateDifference / (365*60*60*24));
                $months = floor(($dateDifference - $years * 365*60*60*24) / (30*60*60*24));
                $days = floor(($dateDifference - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); ?>

然后:

echo "<strong>Overdue by:</strong> $days Days.";
echo“过期日期:$days。”;
但是,此代码将两个日期(仅相隔一天)显示为相隔14天

感谢您的帮助,干杯。

尝试使用对象。他们会让你的生活更轻松。 然后可通过以下方式实现上述目标:

$date1 = new DateTime('2016-04-03 12:54:11');
$date2 = new DateTime('2016-04-04 12:54:11');

$diff = $date1->diff($date2);
$diff
变量随后将成为一个对象,它具有一个
days
属性来显示两个日期之间的天数。在本例中,您可以执行以下操作:

echo "Overdue by: " . $diff->days . " days.";
将输出过期时间为:1天的


另一方面:你应该真的不要再使用
mysql\uuz
函数了。它们已经被弃用多年,在最新的PHP版本中不再是PHP核心的一部分。因此,此代码在最新的服务器上不起作用。另请参见:

我认为最好的方法是使用允许我们这样做的Php DateTime类

试试这个:

$datetime1 = new DateTime("YOUR_DB_TIMESTAMP");
$datetime2 = new DateTime("today");

$difference = $datetime1->diff($datetime2);

echo difference->d;
此外,还可以选择显示差异的方式

$diff->format('%R%a days')
参考资料:

示例->
日期时间文件->
问候

我会使用DateTime对象来处理类似的事情,因为它们确实有很大的帮助

$dateCreatedObj = DateTime::createFromFormat('Y-m-d H:i:s', $dateCreated);
$dateNowObj = new DateTime();
$dateDifference = $dateCreatedObj->diff($dateNowObj);
echo $dateDifference->format('Overdue by: %a Day');

请注意,这不处理时区、多语言和复数问题。

Diff函数返回两个DateTimeInterface对象之间的差异

您可以尝试使用DateTime对象:

<?PHP $dateCreated = mysql_result(mysql_query("SQL to stored date and time"),0);
         $dateNow = new DateTime();
         $dateOther = new DateTime($dateCreated);
         $interval = $dateNow->diff($dateOther);
         echo $interval->format('%R%a days');

我知道mysql_uuu函数,我只是在快速创建一些演示:)不过谢谢!