2017-08-09 43 views
1

我有兩個時間戳:日期時間,多少個小時過去了

$date1 = new DateTime("2017-08-02T08:00:00.000Z"); 
$date2 = new DateTime("2017-10-02T17:00:00.000Z"); 

我需要知道幾個小時是如何這兩個之間,00至08:00至17:00。

它應該返回24h,3個完整的工作日。

+1

的StackOverflow希望你[**嘗試解決你自己的問題**](http://meta.stackoverflow.com/questions/261592),然後尋求幫助,部分原因是[**搜索**](http://stackoverflow.com/search)出現類似問題。花了幾秒鐘才找到問題的確切答案 - 可能比編寫它的時間少。以後再搜索以節省時間:)有關詳細信息,請參閱有關[**如何提出良好問題**](http://stackoverflow.com/help/how-to-ask)的幫助文章,並採取[**網站**遊覽](http://stackoverflow.com/tour)) –

回答

1
<?php 
$date1 = new DateTime("2017-08-02T10:19:55.022Z"); 
$date2 = new DateTime("2017-10-02T10:19:55.022Z"); 
$interval = $date1 ->diff($date2); 
echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes"; 
?> 
+0

ty爲答案,但在這一點上它返回我0,它應該是約19h:/ im以此來計算這兩個日期之間的工作時間。 –

0

獲取這兩個日期的間隔;

$date1 = new DateTime("2017-08-02T10:19:55.022Z"); 
$date2 = new DateTime("2017-10-02T10:19:55.022Z"); 
$diff = $date1 ->diff($date2); 

$diff低於DateInterval像的一個實例:

DateInterval {#727 
    +"y": 0, 
    +"m": 2, 
    +"d": 0, 
    +"h": 0, 
    +"i": 0, 
    +"s": 0, 
    +"weekday": 0, 
    +"weekday_behavior": 0, 
    +"first_last_day_of": 0, 
    +"invert": 0, 
    +"days": 61, 
    +"special_type": 0, 
    +"special_amount": 0, 
    +"have_weekday_relative": 0, 
    +"have_special_relative": 0, 
    } 

所以,$diff->d是天的間隔$diff->h的一部分小時間隔的一部分。你可以使用這些屬性來獲得你想要的。類DateInterval的

更多詳細信息,請結帳這個官方文檔: http://php.net/manual/en/class.dateinterval.php

0
<?php 
$date1 = new DateTime("2017-08-02T10:19:55.022Z"); 
$date2 = new DateTime("2017-10-02T10:19:55.022Z"); 
$interval = $date1->getTimestamp() -$date2->getTimestamp(); 
echo abs($interval/(60*60)); 
?> 
+0

雖然這可能會回答這個問題,但請添加一條關於您的命令的簡短描述,以及爲什麼它解決了最初的問題。 – user1438038