Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的日差_Php_Mysql - Fatal编程技术网

php中的日差

php中的日差,php,mysql,Php,Mysql,这给了我15562和31,我是不是遗漏了什么?我只需要打印出这几天的差异 编辑:如果搜索此问题的任何人碰巧也遇到此问题,则这是最终的输出: number of days: 15562 edited date: 31 number of days: 15562 edited date: 31 number of days: 15562 edited date: 31 $currentDate=time(); 回声“当前时间:”; echo$currentDate; 回声“”; $edi

这给了我15562和31,我是不是遗漏了什么?我只需要打印出这几天的差异

编辑:如果搜索此问题的任何人碰巧也遇到此问题,则这是最终的输出:

number of days: 15562 
edited date: 31 
number of days: 15562 
edited date: 31 
number of days: 15562 
edited date: 31
$currentDate=time();
回声“当前时间:”;
echo$currentDate;
回声“
”; $editedPrintDate=strotTime($printDate); echo“打印日期:”; echo$editedPrintDate; 回声“
”; $numberDays=楼层(abs($currentDate-$editedPrintDate)/60/60/24); 回声“天数:”; 回声地板(天数); 回声“
”;
您只需计算两个日期之间的秒数,然后除以天数:

$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>"; 
然后,可以使用for循环检索日期:

$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;
$numDays=abs($smallestTimestamp-$biggestTimestamp)/60/60/24;
对于($i=1;$i<$numDays;$i++){
回显日期('Y m d',strotime(“+{$i}day”,$smallestimstamp))。
; }

同样,如果您不知道哪个时间戳最小,可以使用
min()
函数(strotime中的第二个参数)。

我想您也可以将时间戳转换为DateTime对象,然后使用您的代码将永远无法工作

date()
需要时间戳,表示0为1970年1月1日的时间点。您不能传入任意数字(您的/606024值),因为它不再是unix时间戳,而是表示“几乎一周”的不可靠数字

如果您想知道经过的天数,只需在MySQL中进行计算,就可以为您解决这个问题:

$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;

for ($i = 1; $i < $numDays; $i++) {
    echo date('Y m d', strtotime("+{$i} day", $smallestTimestamp)) . '<br />';
}

一天有86400秒,而不是606024。$printDate是存储在int类型列中的数字时间戳还是真正的mysql时间戳?为什么是606024而不是86400(24*3600)?对不起,各位,我复制粘贴时出错了数字应该是60*60*24对不起,复制粘贴时出错了数字应该是60*60*24,但我还想提到的是,这是一个时间戳,正在从数据库中传递。这是一个示例:2012-08-09 11:34:02我正在尝试找出是否有一种减去这些值的方法,因为在我使用的mysql数据库中,UNIXTIMEah没有选项。这是一个字符串,不能从time()值中减去它。在mysql中使用
unix\u timestamp()
将yyyy-mm-dd hh:mm:ss类型的字符串转换为标准的unix时间戳,或者在php中使用
strotime()
。你真是个天才!这东西工作得很好!如果有人想知道我做了什么,那么这里是最后的格式:
$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24;

for ($i = 1; $i < $numDays; $i++) {
    echo date('Y m d', strtotime("+{$i} day", $smallestTimestamp)) . '<br />';
}
SELECT DATEDIFF(now(), FROM_UNIXTIME(yourtimestampfield)) AS days