2012-06-01 30 views
4

我想要採取3個單獨的整數輸入(年,月,日),並採取這3個條目,並從他們形成一個日期對象,所以我可以用它來比較其他日期。以3整數,創建一個日期

這是我到目前爲止,在在哪裏從這裏走了損失:

public void compareDates() { 

    String dayString = txtOrderDateDay.getText(); 
    String monthString = txtOrderDateMonth.getText(); 
    String yearString = txtOrderDateYear.getText(); 

    int day = Integer.parseInt(dayString); 
    int month = Integer.parseInt(monthString); 
    int year = Integer.parseInt(yearString); 
} 

爲您所提供的任何幫助,非常感謝。

+7

你試過其他什麼嗎?尋找一個名爲Date的Java類或類似的東西? – akf

回答

4

試試這個,注意到,幾個月零開始,所以我們需要減去一個正確指定月份:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.YEAR, year); 
calendar.set(Calendar.MONTH, month-1); 
calendar.set(Calendar.DATE, day); 
Date date = calendar.getTime(); 

或者這樣:

Calendar calendar = Calendar.getInstance(); 
calendar.set(year, month-1, day); 
Date date = calendar.getTime(); 

或者這個:

Date date = new GregorianCalendar(year, month-1, day).getTime(); 

第一種方法爲您提供了更多的控制,因爲它可以讓你的日期設置等領域,例如:DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, DAY_OF_YEAR, WEEK_OF_MONTH, WEEK_OF_YEAR, MILLISECOND, MINUTE, HOUR, HOUR_OF_DAY

最後,正確的格式在評論中指出的日期,這樣做:

DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); 
String strDate = df.format(date); 
+0

不妨使用set(int year,int month,int date),否? – stevedbrown

+0

非常感謝你,這已經完美工作,但我是後是: YYYY/MM/DD 此輸出(作爲調試爲例): 週一10月15日4點29分51秒BST 2012 是可能修剪這下來? – speak

+1

@stevedbrown謝謝,我更新了我的答案。 –

3

使用GregorianCalendar

new GregorianCalendar(int year, int month, int dayOfMonth) 
+6

請注意,該月基於零。 – BalusC

+1

是的,我總是想知道爲什麼月份是零,但dayOfMonth不是。 – stevedbrown

2

請參考這個庫,在其他的方便你的生活中這樣的任務 - http://joda-time.sourceforge.net/

那你這樣會寫代碼:

LocalDate ld = new LocalDate(int year, int monthOfYear, int dayOfMonth) ; 

這個類提供了一堆比較有用的方法和操作,比如添加分鐘......一起來看看它的文檔here

多一點關於喬達時間:

喬達-Time爲Java日期和時間類提供了一個高質量的替代品。該設計允許多個日曆系統,同時仍然提供一個簡單的API。 '默認'日曆是XML使用的ISO8601標準。格里高利,朱利安,佛教,科普特,埃塞俄比亞和伊斯蘭體系也包括在內,我們歡迎進一步增加。支持類包括時區,持續時間,格式和解析。

相關問題