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函数,我只是在快速创建一些演示:)不过谢谢!