将日期转换为小时

时间:2009-11-22 14:50:34

标签: php date hour days

我第一次尝试使用日期,我用Flash做了一些事情,但它有所不同。

我有两个不同的日期,我希望看到与他们的小时和天数的差异,我发现了太多的例子,但不是我喜欢的:

<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    print date ($now_date - $key_date);
    // it returns an integer like 5813, 5814, 5815, etc... (I presume they are seconds) 
?>

如何将其转换为小时或天?

6 个答案:

答案 0 :(得分:5)

DateTime diff函数返回DateInterval个对象。该对象由与差异相关的变量组成。您可以像上面的示例一样查询天,小时,分钟,秒。

示例:

<?php 
 $dateObject = new DateTime(); // No arguments means 'now'
 $otherDateObject = new DateTime('2008-08-14 03:14:15');
 $diffObject = $dateObject->diff($otherDateObject)); 
 echo "Days of difference: ". $diffObject->days; 
?>

请参阅有关DateTime的手册。

可悲的是,这是一个PHP 5.3&gt;唯一的功能。

答案 1 :(得分:1)

好吧,你总是可以使用date_diff,但这只适用于PHP 5.3.0 +

替代方案是数学。

  

如何将它[秒]转换为小时或天?

每分钟有60秒,这意味着每小时有3600秒。

$hours = $seconds/3600;

当然,如果你需要几天......

$days = $hours/24;

答案 2 :(得分:1)

如果您没有PHP5.3,您可以在userland(taken from WebDeveloper.com)中使用此方法

function date_time_diff($start, $end, $date_only = true)  // $start and $end as timestamps
{
    if ($start < $end) {
        list($end, $start) = array($start, $end);
    }
    $result = array('years' => 0, 'months' => 0, 'days' => 0);
    if (!$date_only) {
        $result = array_merge($result, array('hours' => 0, 'minutes' => 0, 'seconds' => 0));
    }
    foreach ($result as $period => $value) {
        while (($start = strtotime('-1 ' . $period, $start)) >= $end) {
            $result[$period]++;
        }
        $start = strtotime('+1 ' . $period, $start);
    }
    return $result;
}

$date_1 = strtotime('2005-07-31');
$date_2 = time();
$diff = date_time_diff($date_1, $date_2);
foreach ($diff as $key => $val) {
    echo $val . ' ' . $key . ' ';
}

// Displays:
// 3 years 4 months 11 days 

答案 3 :(得分:0)

TheGrandWazoo提到了一个php 5.3&gt;的方法。对于较低版本,您可以将两个日期之间的秒数与一天中的秒数进行比较,以查找天数。

好几天,你这样做:

$days = floor(($now_date - $key_date) / (60 * 60 * 24))

如果您想知道还剩多少小时,可以使用模运算符(%)

$hours = floor((($now_date - $key_date) % * (60 * 60 * 24)) / 60 * 60)

答案 4 :(得分:0)

<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    $diff = $now_date - $key_date;
    $days    = floor($diff/(60*60*24));
    $hours   = floor(($diff-($days*60*60*24))/(60*60));
    print $days." ".$hours." difference";
?>

答案 5 :(得分:0)

我更喜欢使用epoch / unix time deltas。时间以秒为单位,因此您可以非常快速地除以3600小时并除以24 * 3600 = 86400天。