重温java核心技术卷
在看java核心技术卷1时看到了LocalDate的使用,其中有一个示例是打印本日所在月日历,代码如下:
主要对下面这行代码产生了疑惑,其实可以简单的理解,minusDays是对date减去参数中的值,比如minusDays(1),就是对date-1,那么minusDays(today -1),就是对date减去了(today-1),比如今天是5号,today-1 = 4,today-4 = 本月1号。
- date = date.minusDays(today - 1);
public static void main(String[] args) {
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
int today = date.getDayOfMonth();
//今天减去(今天-1),即为月初一号
date = date.minusDays(today - 1);
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();
System.out.println("周一 周二 周三 周四 周五 周六 周日");
for (int i = 1; i < value; i++) {
System.out.print(" ");
}
while (date.getMonthValue() == month) {
System.out.printf("%3d", date.getDayOfMonth());
if (date.getDayOfMonth() == today) {
System.out.print("*");
} else {
System.out.print(" ");
}
date = date.plusDays(1);
if (date.getDayOfWeek().getValue() == 1) {
System.out.println();
}
}
if (date.getDayOfWeek().getValue() != 1) {
System.out.println();
}
}
}