2016-11-29 128 views
-1

我在我的應用程序中使用了2個JSpinner控件,允許用戶輸入24小時制HH:mm格式。我試圖驗證開始時間之後是否結束時間。但它似乎沒有按預期工作。請幫助我什麼是正確的方式來做到這一點。如何比較使用JSpinner輸入的時間?

我的微調控制是這樣的:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 24); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
startModel.setValue(calendar.getTime()); 
JSpinner spnStartTime = new JSpinner(startModel); 
JSpinner.DateEditor editor = new JSpinner.DateEditor(spnStartTime, "HH:mm"); 
DateFormatter formatter1 =(DateFormatter)statTimeEditor.getTextField().getFormatter();   
formatter1.setAllowsInvalid(false); 
formatter1.setOverwriteMode(true); 
spnStartTime.setEditor(statTimeEditor); 

我做同樣的事情也spnEndTime。

而這正是我想現在要做的:

SimpleDateFormat parser = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",Locale.ENGLISH); 
Date st=parser.parse(String.valueOf(spnStartTime.getValue())); 
Date en=parser.parse(spnEndTime.getValue().toString()); 
if(en.after(st)) 
{ 
    //do stuff 
} 
else 
{ 
    //display error 
} 

但spnStartTime.getValue()於1970年返回的日期,我的編輯器設置爲當前年份。所以我的日期比較不能按預期工作。我嘗試使用st.setHours(Calendar.getInstance()。getTime()。getHours());同樣也適用於'en'。但getHours()現在已被棄用。那麼對此有什麼合適的解決方法?

+0

爲了更快得到更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

+0

在較短的筆記中,我如何比較從2個JSpinner控件獲取的(HH:mm)時間值作爲用戶輸入?我如何從Date對象中檢索小時和分鐘部分。任何關於這些的幫助對我來說都是很有價值的。 – developer3

+0

上次我發佈了一個不同的問題,人們評論說,如果有人應該幫助我,我應該發佈更詳細的代碼。所以這次我發佈了細節,我只看到了降價。我應該發佈什麼?!!! – developer3

回答

0

在您的calendar對象上,您只設置時間,而不是日期。因此,模型上的日期不變:1970-01-01。還設置年,月和日。 你也可以看看How to use Spinners

+0

從我的理解,當我調用calender = Calendar.getInstance();它會將當前日期和時間設置爲日曆。不是嗎?另外,當我嘗試打印calender.getTime()的值時,它會給我當前的年份和月份。 – developer3