[英]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.