干草,我有一个数据库举行事件。有2个字段“开始”和“结束”,其中包含时间戳。当管理员进入这些日期时,他们只能设置一天,月,一年。因此,我们仅处理包含天数,几个月,几年,小时,分钟,秒的邮票(小时,分钟和秒设置为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;
}

希望这可以帮助 !

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

http://www.plus2net.com/php_tutorial/date-diff.php

http://www.phpf1.com/tutorial/php-date-difference.html

$daysInBetween = range($startTs, $endTs, 86400);
$secondDay = date('M d Y', $daysInBetween[1]);
/*
$thirdDay = date('M d Y', $daysInBetween[2]);
...
*/

请注意 range() 功能是包容的。

    **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('Y-m-d', $day).PHP_EOL;
}

顺便说一句,1262304000是12月31日,而不是1月1日。

获取两个日期的差,并将其除以86400。ABS(($ date1- $ date2) / 86400)将产生所需的结果

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top