2014-01-26 17 views
0
Date date= (new GregorianCalendar(year, month, day)).getTime(); 
SimpleDateFormat f = new SimpleDateFormat("EEEE"); 
String dow=f.format(date); 

System.out.print("This date is a "+dow); 

我有用戶輸入的月份(1-12)天(1-31),一年(1600-2400) 它工作正常,只是它顯示的錯誤的一天。例如它說2014年1月1日是星期六,但是是星期三。 這可能是因爲我沒有考慮閏年,但我不知道如何去做。我也不知道如何告訴它每個月有多少天。數組? 希望最小的線條也是如此。獲得一週的從用戶輸入當天

非常感謝!這一直在擾亂我一個小時+。還有一件很簡單的事情,我本該想想。我一定很累。

謝謝!!!!!!!

+0

可能重複的[如何通過傳遞特定日期來確定星期幾?](http://stackoverflow.com/questions/5270272/how-to-determine-day-of-week-by-passing-specific-日期) –

+1

月份基於零。 http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#GregorianCalendar%28int,%20int,%20int%29 –

回答

2

Month是基於零的。試試,

Date date= (new GregorianCalendar(year, month-1, day)).getTime(); 
    SimpleDateFormat f = new SimpleDateFormat("EEEE"); 
    String dow=f.format(date); 
1

answer by Shashank Kadne是正確的。

喬達時間

僅供參考,這項工作更簡單,使用Joda-Time 2.3庫乾淨。

喬達時使用的東西,如理智爲基礎的一個計數:

  • 月的年中
    月= 1,二月= 2,依此類推。
  • 日的星期 -
    星期一= 1,星期日= 7(標準ISO 8601周)

喬達時間DateTime對象知道自己的時區,不同java.util.Date對象。

Joda-Time利用指定的Locale對象呈現本地化的字符串。

示例代碼

// Specify a time zone rather than rely on default. 
DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris"); 

int year = 2014; 
int month = 1; // Sensible one-based counting. January = 1, February = 2, … 
int dayOfMonth = 2; 

DateTime dateTime = new DateTime(year, month, dayOfMonth, 0, 0, 0, timeZone); 

// Day-of-week info. 
int dayOfWeekNumber = dateTime.getDayOfWeek(); // Standard week (ISO 8601). Monday = 1, Sunday = 7. 
DateTime.Property dayOfWeekProperty = dateTime.dayOfWeek(); 
String dayOfWeekName_Short = dayOfWeekProperty.getAsShortText(Locale.FRANCE); 
String dayOfWeekName_Long = dayOfWeekProperty.getAsText(Locale.FRANCE); 

轉儲到控制檯...

System.out.println("dateTime: " + dateTime); 
System.out.println("dayOfWeekNumber: " + dayOfWeekNumber); 
System.out.println("dayOfWeekName_Short: " + dayOfWeekName_Short); 
System.out.println("dayOfWeekName_Long: " + dayOfWeekName_Long); 

運行時...

dateTime: 2014-01-02T00:00:00.000+01:00 
dayOfWeekNumber: 4 
dayOfWeekName_Short: jeu. 
dayOfWeekName_Long: jeudi 

不受時間&時區

如果TRU只想要沒有任何時間或時區的日期,然後編寫類似的代碼,但是需要LocalDate類。

相關問題