2014-02-20 48 views
0

java.util.Date將錯誤的日期作爲輸出。在java中找到基於日期的日期 - 給出不正確的答案

java.util.Date date = new Date(2014,03,01); 
    System.out.println("day is" +date.getDay()); 

輸出:一天3

實際上它應該是7

更新:非常感謝我能得到的輸出這裏是我的代碼

java.util.Calendar c = java.util.Calendar.getInstance(); 
    c.clear(); 
    c.set(year,month,dd); 
    System.out.println("day of week "+c.get(java.util.Calendar.DAY_OF_WEEK)); 

回答

2

按javadoc getDay()

返回該日期所代表的星期幾。返回值 值(0 =星期日,1 =星期一,2 =星期二,3 =星期三,4 = 星期四,5 =星期五,6 =星期六)表示星期 中包含或開始於時間即時由此 日期對象表示,如本地時區中所解釋的。

所以其不是一個月的一天。另請注意,您正在使用已棄用日期構造函數和方法。您可以使用java.util.Calendar

而且一個月03不是在3月達到相同的,其

Calendar c = Calendar.getInstance(); 
    c.set(Calendar.YEAR, 2014); 
    c.set(Calendar.MONTH, 3); 
    c.set(Calendar.DAY_OF_MONTH, 1); 

    System.out.println(c.get(Calendar.DAY_OF_WEEK)); 

這裏也輸出爲3,因爲該日期表示2014年4月1日,這是星期二和按Calendar.DAY_OF_WEEK doc

獲取並設置指示星期幾的字段編號。此 字段取星期一,星期一,星期二,星期三,星期四 星期五和星期六。

而且Calendar.TUESDAY3

+0

如果'April'那麼日期應該返回,'2'代表'(2014,03,01)'。 '2014年4月1日'的日期落在'星期二' –

+0

@Ravinder我想知道同樣的..讓我試圖找出它 – sanbhat

5

我想你想創建日期3月1日2014年但隨着你的構造函數中調用你創建的日期4月1日3914! 的API告訴你爲什麼:

A year y is represented by the integer y - 1900. 
A month is represented by an integer from 0 to 11; 0 is January, 1 is February, and so forth; thus 11 is December. 
A date (day of month) is represented by an integer from 1 to 31 in the usual manner. 

編輯:另外這個構造已被棄用。改用日曆。

+0

+1。 「新日期(2014,03,01)」是'Wed Apr 01 3914',因此'日'是'3'。 –