从用户输入获取星期几

时间:2014-01-26 05:43:47

标签: java calendar dayofweek monthcalendar

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日是星期六,但是星期三。 这可能是因为我没有考虑到闰年,但我没有任何线索可以做到这一点。我也不知道如何告诉它每个月有多少天。数组? 希望最小的线条。

非常感谢!这一直困扰我一个小时+。这么简单,我应该想到的。我一定很累。

感谢!!!!!!!

2 个答案:

答案 0 :(得分:2)

Month基于零。尝试,

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

答案 1 :(得分:1)

answer by Shashank Kadne是正确的。

约达时间

仅供参考,使用Joda-Time 2.3库,这项工作更简单,更清晰。

Joda-Time对以下事项使用合理的基于单一的计数:

  • 年度
    1月= 1月,2月= 2,依此类推。
  • 星期几星期一= 1,星期日= 7.(标准ISO 8601周)

Joda-Time 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

没有时间&时区

如果您真的只想要没有任何时间或时区的日期,那么请使用LocalDate类编写类似的代码。