簡體   English   中英

PHP DateTime 其他兩個日期的間隔是多少?

[英]PHP DateTime how much is in interval of 2 other dates?

我很難看到 2 個 DateTime 中的“多少”在另外 2 個日期時間之間。

例如,我有一個“開始”和“結束”日期時間(我省略了一天,因為這里只有時間相關):

Start: 01:00
End: 09:30

我還有另外兩次:

Night_start: 00:00
Night_end: 04:00

所以,我需要弄清楚“開始”和“結束”的“多少”在“night_start”和“night_end”部分之間。

正確答案顯然是 3 小時,但我將如何計算這個 go

希望我的問題有意義。 謝謝。

因此,您有 4 個值並希望找到重疊。

將它們按順序排列。

如果四個中的第二個值是任一輸入對的最后一個值,則范圍不重疊,否則重疊是中間兩個值,

減去以找到重疊的長度。

另一種方式

給定(as,ae),(bs,be)重疊是

min(ae,be) - max(as,bs) ,或者零或負沒有重疊。

您將需要比較和差異算法來處理您的數據類型。

使用 min(ae,be) - max(as,bs) 和十進制時間 function。 那樣的東西,然后呢?

<?php
$start_date = '01:00:00';
$end_date = ' 09:30:00';
$start_night = '00:00:00';
$end_night = '04:00:00';

function timeToDecimal($time)
{
    $hms = explode(":", $time);
    return ($hms[0] + ($hms[1]/60) + ($hms[2]/3600));
}

$min = min(timeToDecimal($end_date), timeToDecimal($end_night));
$max = max(timeToDecimal($start_date), timeToDecimal($start_night));
$result = ($min-$max>0) ? $min-$max : timeToDecimal($end_night)-timeToDecimal($start_night);

echo  $result.' hour(s) of night';

結果:

3 hour(s) of night

暫無
暫無

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

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