2010-08-16 161 views
3

我有兩個時間戳輸入一個是當前的時間,另一個是未來獲取時間間隔

未來時間:2010-8-17 23:00 當前時間:2010-8- 15 11:00

我想設置通知系統,它將顯示上述日期之間的時間間隔。即

前15分鐘 前30分鐘2小時前 前1天

3小時之前 .... .... .... 我不是之前小時知道如何實現在PHP這個任務,不知道這裏的任何一個可以建議我如何實現這一任務

回答

1
$t1 = getdate($current_date); 
$t2 = getdate($future_date); 
return $t2[0]-$t1[0]; 

這會給你兩個日期之間的差值,MEAS在幾秒鐘內。

+0

不確定您的意思與最後一句話。 'date_parse'以秒爲單位解析日期而不是時間間隔。 – Artefacto 2010-08-16 00:41:13

+0

@藝術品:刪除。 'date_parse' *將*接受一個unix時間戳,如果你在其前加'@',但你必須減去'parse_date(@ 0)'使輸出成爲兩個給定日期之間的差值。 – Borealid 2010-08-16 00:51:09

+0

我還沒有看到如何幫助。也許你可以舉一個例子說明這個策略如何導致OP想要的東西。 – Artefacto 2010-08-16 00:53:04

0

獲取兩個日期之間的差值,然後用date_parse

// $difference = difference in times 
print_r(date_parse($difference)); 

,這將導致沿

Array ( [year] => 2006 [month] => 12 [day] => 12 [hour] => 10 [minute] => 0 [second] => 0 [fraction] => 0.5 [warning_count] => 0 [warnings] => Array() [error_count] => 0 [errors] => Array() [is_localtime] => )

線的東西更多信息

2

http://php.net/manual/en/function.date-parse.php如何使用DateTime類。

<?php 
$datetime1 = new DateTime('2010-8-15 11:00'); 
$datetime2 = new DateTime('2010-8-17 23:00'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%d days, %H hours'); 
?> 

輸出:

+2 days, 12 hours

+0

致命錯誤:調用未定義的方法DateTime :: diff() – Maximus 2010-08-16 11:23:41

+0

您運行的是哪個版本的PHP? – 2010-08-16 11:28:52

+0

我使用php 5.2.4 – Maximus 2010-08-16 11:30:48

0

這是我做過什麼,當我需要同樣的事情。

您可以通過獲取一週,一個月或一年中的秒數來輕鬆擴展它。

 
function getTimeInterval($ts1, $ts2) 
{ 
    $interval = (int)$ts2 - (int)$ts1; 
    if ($interval < 0) { 
     return false; 
    } else { 
     $days = floor($interval/86400); // seconds in one day 
     $interval = $interval % 86400; 
     $hours = floor($interval/3600); 
     $interval = $interval % 3600; 
     $minutes = floor($interval/60); 
     $interval = $interval % 60; 
     $seconds = $interval; 
    } 
    return array(
     'days' => $days, 
     'hours' => $hours, 
     'minutes' => $minutes, 
     'seconds' => $seconds 
    ); 
}