所以我需要制作一个基本日历,显示特定年份和月份的日历(用户应该可以选择 基于文本输入的任何月份和任何年份。
到目前为止,我已设法创建一个日历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.")
}
它没有执行。
答案 0 :(得分:1)
试试这个:
cal.set(Calendar.DATE, 1);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("EEEE");
System.out.println(sdf.format(cal.getTime()));
输出:
星期六
答案 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