![](/img/trans.png)
[英]Gregorian Calendar: Getting a user's (day_of_the_week) from their own birthday input
[英]Getting the day of the week from user input
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日是星期六,但是那是星期三。 可能是因為我沒有考慮leap年,但我沒有線索去做。 我也不知道如何告訴每個月多少天。 數組? 希望最少的行也是如此。
非常感謝!!! 這已經困擾了我一個多小時。 和一些簡單的事情,我應該已經想到了。 我一定累了
謝謝!!!!!!!
Month
基於零。 嘗試,
Date date= (new GregorianCalendar(year, month-1, day)).getTime();
SimpleDateFormat f = new SimpleDateFormat("EEEE");
String dow=f.format(date);
Shashank Kadne的答案是正確的。
僅供參考,使用Joda-Time 2.3庫,這項工作更簡單,更簡潔。
Joda-Time對諸如以下內容使用明智的基於一點的計數:
與java.util.Date
對象不同,Joda-Time DateTime
對象知道自己的時區。
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
如果您確實只希望沒有任何時間或時區的日期,請編寫類似的代碼,但要使用LocalDate類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.