我在数据库中保存了日期和时间,格式如下:2016-04-03 12:54:11
基本上,此日期和时间戳表示创建某些内容的确切日期和时间。我要做的是显示第二个日期和时间,即自第一个时间戳以来的确切天数。
因此,如果数据库中的时间戳为2016-04-03 12:54:11
且今天的日期和时间为2016-04-04 12:54:11
,则会显示:Overdue by: 1 Day
到目前为止,我有:
<?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.";
但是,此代码显示2个日期,相隔仅一天,相隔14天。
欢迎帮助,欢呼。
答案 0 :(得分:1)
尝试使用DateTime个对象。他们会让您的生活更轻松。 然后可以通过以下方式实现上述目标:
$date1 = new DateTime('2016-04-03 12:54:11');
$date2 = new DateTime('2016-04-04 12:54:11');
$diff = $date1->diff($date2);
$diff
变量将是DateInterval对象,其days
属性显示两个日期之间的天数。在这种情况下1,所以你可以这样做:
echo "Overdue by: " . $diff->days . " days.";
将输出Overdue by: 1 days.
。
旁注:你应该真的不再使用mysql_
功能了。它们已被弃用多年,不再是最新PHP版本中PHP核心的一部分。因此,此代码不适用于最新的服务器。另请参阅:Why shouldn't I use mysql_* functions in PHP?
答案 1 :(得分:0)
我认为最好的方法就是使用Php DateTime类来允许我们这样做。
试试这个:
$datetime1 = new DateTime("YOUR_DB_TIMESTAMP");
$datetime2 = new DateTime("today");
$difference = $datetime1->diff($datetime2);
echo difference->d;
此外,您可以选择显示差异的方式。
$diff->format('%R%a days')
参考:
例 - &GT; Finding the number of days between two dates
DateTime Doc - &gt; http://php.net/manual/es/class.datetime.php
此致!
答案 2 :(得分:0)
我会使用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');
请注意,这不会处理时区,多语言和复数问题。
答案 3 :(得分:0)
Diff函数返回两个DateTimeInterface对象之间的差异。
您可以尝试使用DateTime对象:
tooltip: {
useHTML: true,
formatter: function() {
return "<div style='white-space: normal; width: 150px;'>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</div>";
}
},