2009-11-22 115 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