簡體   English   中英

如何在PHP中找到兩個日期之間的小時差?

[英]How do I find the hour difference between two dates in PHP?

我有兩個日期,格式為“Ymd H:i:s”。 我需要比較這兩個日期並找出小時差。

您可以將它們轉換為時間戳並從那里開始:

$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);

除以 3600 是因為一小時有 3600 秒,並使用round()避免有很多小數位。

您也可以使用DateTime類 -

$d1= new DateTime("06-08-2015 01:33:26pm"); // first date
$d2= new DateTime("06-07-2015 10:33:26am"); // second date
$interval= $d1->diff($d2); // get difference between two dates
echo ($interval->days * 24) + $interval->h; // convert days to hours and add hours from difference
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;

作為對已接受答案的補充,我想提醒您\\DateTime::diff可用!

$f = 'Y-m-d H:i:s';
$d1 = \DateTime::createFromFormat($date1, $f);
$d2 = \DateTime::createFromFormat($date2, $f);

/**
 * @var \DateInterval $diff
 */
$diff = $d2->diff($d1);
$hours = $diff->h + ($diff->days * 24); // + ($diff->m > 30 ? 1 : 0) to be more precise

\\DateInterval文檔。

問題是使用這些值的結果是 167,它應該是 168:

$date1 = "2014-03-07 05:49:23";
$date2 = "2014-03-14 05:49:23";
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 /  60;
$date1 = date_create('2016-12-12 09:00:00');

$date2 = date_create('2016-12-12 11:00:00');

$diff = date_diff($date1,$date2);

$hour = $diff->h;

你可以試試這個:

    $time1 = new DateTime('06:56:58');
    $time2 = new DateTime('15:35:00');
    $time_diff = $time1->diff($time2);
    echo $time_diff->h.' hours';
    echo $time_diff->i.' minutes';
    echo $time_diff->s.' seconds';

輸出:

8 小時 38 分 2 秒

您可以使用strtotime()來解析您的字符串並在它們之間進行區分。


資源:

你可以試試這個:

$dayinpass = "2016-09-23 20:09:12";
$today = time();
$dayinpass= strtotime($dayinpass);
echo round(abs($today-$dayinpass)/60/60);

這是因為節省了白天時間。 2014 年夏令時(美國)於 3 月 9 日星期日凌晨 2:00 開始。

您在 $date1 = "2014-03-07 05:49:23" 到 $date2 = "2014-03-14 05:49:23" 期間損失一小時;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM