干草,我有一个数据库举行事件。 有两个字段“开始”和“结束”,这些字段包含时间戳。 当pipe理员input这些date时,他们只能设置日,月,年。 所以我们只处理含有日,月,年,不是几小时,几分钟,几秒(小时,分钟,秒都设为0,0,0)的邮票。
我有一个事件,开始时间为1262304000,结束时间为1262908800.这些转换为2010年1月1日和2010年1月8日。我将如何获得这些时间戳之间的所有天? 我希望能够在2010年1月2日(1262390400),2010年1月3日(1262476800)..一路走到尽头。 5月28日至6月14日,这些事件可能会跨越不同的月份。
任何想法如何做到这一点?
你只需要计算两个日期之间的秒数,然后除以获得天数:
$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中的第二个参数)。
我认为一个快速的解决方法是从end_stamp中减去秒数的天数,直到你到达start_tag。
//1 day = 86400 seconds
我会建立一个日后使用的数组。
编辑(例子)
$difference = 86400; $days = array(); while ( $start_time < $end_time ) { $days[] = date('M j Y', $end_time); $end_time -= $difference; }
这应该涵盖任何时间框架,即使它过了一个多月。
尝试这个:
while($date_start <= $date_end) { echo date('M d Y', $date_start) . '<br>'; $date_start = $date_start + 86400; }
希望这可以帮助 !
**This is a very simple code for find days hours minutes and seconds in php** $dbDate = strtotime("".$yourbdDate.""); // Database date $endDate = time(); // current time $diff = $endDate - $dbDate; /// diffrence $days = floor($diff/86400); /// number of days $hours = floor(($diff-$days*86400)/(60 * 60)); //// number of hours $min = floor(($diff-($days*86400+$hours*3600))/60);///// numbers of minute $second = $diff - ($days*86400+$hours*3600+$min*60); //// secondes if($days > 0) echo $days." Days ago"; elseif($hours > 0) echo $hours." Hours ago"; elseif($min > 0) echo $min." Minute ago"; else echo "Just second ago";
像这样的东西?
$day = $start; while ($day < $end) { $day += 86400; echo $day.' '.date('Ym-d', $day).PHP_EOL; }
顺便说一下,1262304000是12月31日,而不是1月1日。
得到两个日期的差异,并将其除以86400. abs(($ date1 – $ date2)/ 86400)将产生所需的结果
$d1=mktime(22,0,0,1,1,2007); $d2=mktime(0,0,0,1,2,2007); echo "Hours difference = ".floor(($d2-$d1)/3600) . "<br>"; echo "Minutes difference = ".floor(($d2-$d1)/60) . "<br>"; echo "Seconds difference = " .($d2-$d1). "<br>"; echo "Month difference = ".floor(($d2-$d1)/2628000) . "<br>"; echo "Days difference = ".floor(($d2-$d1)/86400) . "<br>"; echo "Year difference = ".floor(($d2-$d1)/31536000) . "<br>";
$daysInBetween = range($startTs, $endTs, 86400); $secondDay = date('M d Y', $daysInBetween[1]); /* $thirdDay = date('M d Y', $daysInBetween[2]); ... */
请注意range()
函数是包含性的。