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

3 回答 3

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 中的第二个参数)。

于 2012-08-10T14:54:04.993 回答
0

我想您也可以将时间戳转换为 DateTime 对象,然后使用DateTime::diff

于 2012-08-10T14:58:31.007 回答
0

你的代码永远不会工作。

date()需要一个时间戳,表示一个时间点,其中 0 表示 1970 年 1 月 1 日。您不能传入一些任意数字(您的 /606024 值),因为这不再是 unix 时间戳,它现在是一些代表“几乎一周”的不稳定数字。

如果您想要经过的天数,只需在 MySQL 中进行计算,它可以为您计算出来:

SELECT DATEDIFF(now(), FROM_UNIXTIME(yourtimestampfield)) AS days
于 2012-08-10T14:59:37.573 回答