0

你能解释一下这个java日历代码吗

Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.MONTH, month-1);

为什么我们将月份的值递减一

calendar.set(Calendar.DAY_OF_MONTH, day);

calendar.set(Calendar.YEAR, year);

return calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US).toUpperCase();

4

1 回答 1

1

避免遗留类

与最早版本的 Java 捆绑在一起的可怕的旧日期时间类的许多问题之一是它们古怪的编号。一月至十二月的月份编号为 0-11。

永远不要使用这些遗留类、CalendarDate等。

java.time

仅使用java.time类。

显然你想要当前日期。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;

如果要切换月份但保留年份和日期,请使用withMonth方法。

LocalDate ld = today.withMonth( Month.JANUARY ) ;

引用 Javadoc:

返回此 LocalDate 的副本,其中更改了年份。

如果该年的日期无效,则将其更改为该月的最后一个有效日期。

由于您似乎想要英文大写的星期几的名称,这很简单:

System.out.println( ld.getDayOfWeek() ) ;

星期日

getDayOfWeek返回一个DayOfWeek枚举常量。如果你需要一个String,使用它的toString方法。

于 2021-06-10T03:37:34.940 回答