php的天差

时间:2012-08-10 14:51:17

标签: php mysql

$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>"; 

3 个答案:

答案 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