$currentDate = time() - $printDate; //print date is a timestamp in mysql
$numberDays = floor($currentDate/(606024));
echo "number of days: $numberDays </br>";
$editedDate = date("d ", $numberDays);
echo "edited date: $editedDate";
这是我的输出:
number of days: 15562
edited date: 31
number of days: 15562
edited date: 31
number of days: 15562
edited date: 31
这给了我15562和31,所以我在这里遗漏了什么?我只需打印出日内的差异
编辑:如果搜索此问题的任何人碰巧碰到了这个问题,那么这是最终的输出:
$currentDate = time();
echo "Current Time:";
echo $currentDate;
echo "</br>";
$editedPrintDate = strtotime($printDate);
echo "Print Date:";
echo $editedPrintDate;
echo "</br>";
$numberDays = floor(abs($currentDate - $editedPrintDate)/60/60/24);
echo "Number of Days:";
echo floor($numberDays);
echo "</br>";
答案 0 :(得分:1)
您只需计算两个日期之间的秒数,然后除以得到天数:
$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;
然后,您可以使用for循环来检索日期:
$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;
for ($i = 1; $i < $numDays; $i++) {
echo date('Y m d', strtotime("+{$i} day", $smallestTimestamp)) . '<br />';
}
同样,如果你不知道哪个时间戳是最小的,你可以使用min()
函数(strtotime中的第二个参数)。
答案 1 :(得分:0)
我想您也可以将时间戳转换为DateTime对象,然后使用DateTime::diff
答案 2 :(得分:0)
您的代码永远不会有效。
date()
需要一个时间戳,表示0为1970年1月1日的时间点。你不能传递一些任意数字(你的/ 606024值),因为它不再是一个unix时间戳,它现在是一个代表“差不多一周”的不稳定数字。
如果您想要经过的天数,只需在MySQL中进行计算,more than capable为您解决这个问题:
SELECT DATEDIFF(now(), FROM_UNIXTIME(yourtimestampfield)) AS days