從10月1日至3月31日的費用爲$ 1(第一季)之內。從4月1日到9月30日,費用爲2美元(第2季)。計數的日期範圍內有多少天是另一個日期範圍
如何計算給定日期範圍(用戶輸入)的總費用根據此日期降幅多少天到第1季和第2季?
下使我user's日期範圍內的天數,但我不知道如何測試對第1季或第二季:
$user_input_start_date = getdate($a);
$user_input_end_date = getdate($b);
$start_date_new = mktime(12, 0, 0, $user_input_start_date['mon'], $user_input_start_date['mday'], $user_input_start_date['year']);
$end_date_new = mktime(12, 0, 0, $user_input_end_date['mon'], $user_input_end_date['mday'], $user_input_end_date['year']);
return round(abs($start_date_new - $end_date_new)/86400);
鑑於日期範圍開始和結束在2012年或2012年開始,僅在2013年結束,這給我10種不同的可能性,在哪個季節日期範圍可以開始,可以結束。
必須有比迭代的if/else和下列條件一遍遍比較日期時更好的解決方案:
- 日期範圍完全在賽季1
- 日期範圍在第1季開始,在賽季結束2
- 日期範圍開始於第1季,整個賽季2橫跨在本賽季的第二部分結束1
...等等與「在賽季開始2" 等
這不是How many days until X-Y-Z date?與計算天數,只有交易的副本。它沒有解決將一個日期範圍與另一個日期範圍進行比較的問題。
可能重複[XXX日期之前的幾天?](http://stackoverflow.com/questions/654363/how-many-days-until-xxx-date) – fresskoma
這不是重複的。他需要比較幾個日期範圍的重疊,而不僅僅是計算天數。 – vascowhite
@vascowhite:是的,我最初誤解了這個問題。不幸的是,PHP DateTime API不是特別精心設計的(意想不到的)。我目前正在檢查是否有簡單的解決方案來使用API來完成此操作。 – fresskoma