2009-11-22 73 views
0

我正在尝试第一次使用日期,我是用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) 
?> 

哪有我将它转换为几小时或几天?

回答

1

好了,你可以随时使用date_diff,但这只是针对PHP 5.3.0+

另一种方法是数学。

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

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

$hours = $seconds/3600; 

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

$days = $hours/24; 
+0

simple and funcional!谢谢 – vitto

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的唯一功能。

+0

伟大的建议,遗憾的是我有一个5.22版本,但下一次我能,我会使用它。 – vitto

+1

在你的例子中,有一个很好的答案,就是你的例子,你在第四行有一个额外的支撑。所以... '$ diffObject = $ dateObject-> diff($ otherDateObject));' 应该是...... '$ diffObject = $ dateObject-> diff($ otherDateObject);' – AndyGaskell

0

TheGrandWazoo提到的PHP 5.3>的方法。对于较低版本,您可以将两个日期之间的秒数与一天中的秒数分开以查找天数。

的日子里,你这样做:

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

如果你想知道多少个小时仍然离开了,你可以使用模运算符(%)

$hours = floor((($now_date - $key_date) % * (60 * 60 * 24))/60 * 60) 
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"; 
?> 
0

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

1

如果你没有PHP5.3您可以使用此方法从用户空间(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