2011-08-20 39 views
1

我必須創建一個預訂系統類型程序,用戶輸入一個用戶名(字符串),然後輸入他們想要預訂的月份,日期和時間,然後輸入結束月份,日期和時間。所以它會看起來類似於:如何解析我的日期範圍然後檢查碰撞?

John Jul 23 9 Jul 24 18 

這是

user startMonth startDate startTime endMonth endDate endTime 

我需要能夠實現這個,這樣,我可以檢查任何預訂碰撞,可能有人請給我一個指南因爲我是Java的新手,所以如何做到這一點。

編輯:我知道如何解析輸入,但我不知道如何在java中使用日期函數,以及如何幫助我檢查是否有任何預訂相互衝突。

+0

究竟是什麼問題?如何解析日期或如何執行所有程序? – SJuan76

+0

你有一個關於如何做到這一點的總體想法,需要在java中的實現幫助,或者你需要一個關於如何解決這個問題的一般想法? – DarkSquirrel42

+0

我有解析日期,我只是不明白如何使用日期類,以及如何將信息存儲到它,所以我可以檢查它的範圍內的範圍 – FHr

回答

2

要回答這個問題... (start1 <= end2 and start2 <= end1)

java.util.Date包裝long值。使用getTime()來獲得該值,以進行比較。

請參閱http://c2.com/cgi/wiki?TestIfDateRangesOverlap

+0

我該如何使用getTime輸入? – FHr

2

在Java中,解析和格式化Date對象由類型爲DateFormat的對象處理,通常爲SimpleDateFormat

查看SimpleDateFormat文檔並嘗試想象如何使用Date對象來查看是否有任何衝突。

0

您需要解析輸入,你可以用String.split方法 或更復雜的方式,我認爲這是更好地做到這一點,是通過使用Java正則表達式。

解析後你可以形成一個字符串,它將包含日期,然後用java日期解析器解析它。

0

爲maerics已經寫道:SimpleDateFormat的是你的朋友?

在3個部分分割你的輸入像SJuan76建議和飼料兩個日期部分的SimpleDateFormat的解析方法...這樣你可以得到一個Date對象這兩個日期部分...

現在

的預訂部分和碰撞檢查...

我建議你創建自己的類的預訂或預訂或者無論你怎麼稱呼它。

你可以使用一個LinkedList來存儲對象...

當你的對象添加到列表中,通過保持起始日期排序的列表...這樣你可以看到,如果插入的對象會發生碰撞另一個機會...找到插入新對象的位置...查看前任...如果新對象的開始日期在前任結束日期之前,我們有碰撞...如果新的結束日期是在繼任者開始日期之後,我們有碰撞...如果沒有碰撞,請將新對象插入列表中的此位置...