找出任何一个月的第一天是哪一天

时间:2015-11-07 23:31:47

标签: java calendar

所以我需要制作一个基本日历,显示特定年份和月份的日历(用户应该可以选择 基于文本输入的任何月份和任何年份。

到目前为止,我已设法创建一个日历obj,使用Scanner从用户那里获得所需的月份和年份,但我的问题是如何找出该月的第一天是什么?在上面的例子中,它是一个星期六。我构建它的逻辑是,如果我知道第一天,我可以创建一个String [] []数组,并通过循环从第一天起的月份开始显示相关日期的日期。我使用扫描仪来获得所需的月份和年份。然后我创建了一个日历对象并设置了Calendar变量; Calendar.YEAR和Calendar.MONTH,根据用户的要求:

Calendar cal= Calendar.getInstance();
cal.set(Calendar.YEAR, year); //my year variable is set 2015
cal.set(Calendar.MONTH, chosenMonth); //my chosenMonth is set to 5 since January starts from 0.

我尝试使用以下代码测试我的日历,看看它是否会执行代码,如果星期一是该月的第一天。 2015年6月,它是。

if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY){ System.out.println("This will print is my calendar secessfully gathers that monday was the first day of the month on June 2015.") }

它没有执行。

2 个答案:

答案 0 :(得分:1)

试试这个:

cal.set(Calendar.DATE, 1);

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("EEEE");
System.out.println(sdf.format(cal.getTime()));

输出:

  

星期六

Demo

答案 1 :(得分:1)

Java SE 8有一个全新的日期和时间API java.time。请参阅Tutorial

您可以使用课程LocalDate获取给定周的日期。例如,使用上面的日期,

LocalDate d = LocalDate.of(2011, 10, 1);

然后LocalDate::getDayOfWeek()方法将返回DayOfWeek枚举实例,例如SATURDAY

DayOfWeek dayOfWeek = localDate.getDayOfWeek ();

该枚举可以为您的句子输出呈现本地化字符串。

 String output = dayOfWeek.getDisplayName ( TextStyle.FULL , Locale.CANADA_FRENCH); // Or Locale.US or Locale.ENGLISH, and so on.
  

samedi