LocalDate的minusDays方法详解
public LocalDate minusDays(long daysToSubtract)
返回此LocalDate
的副本,并减去指定的天数。
该方法根据需要减去月份和年份字段的日期字段减去指定的金额,以确保结果保持有效。 如果超过最大/最小年份,结果将无效。
例如,2009-01-01减去一天会导致2008-12-31。
此实例是不可变的,不受此方法调用的影响。
-
参数
daysToSubtract
- 减去的日子可能是负数 -
结果
一个
LocalDate
基于这个日期减去,而不是null -
异常
DateTimeException
- 如果结果超出支持的日期范围
import java.time.DayOfWeek;
import java.time.LocalDate;
public class CalendarTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
System.out.println("month = " + month);
int today = date.getDayOfMonth();
System.out.println("today = " + today);
date = date.minusDays(today - 1);
System.out.println("date = " + date);
System.out.println("today - 1 = " + (today - 1));
LocalDate date2 = LocalDate.now();
int day = date2.getDayOfMonth();
date2 = date2.minusDays(15);
System.out.println("day = " + day);
System.out.println("date2 = " + date2);
DayOfWeek weekday = date.getDayOfWeek();
System.out.println("weekday = " + weekday);
int value = weekday.getValue();
System.out.println("value = " + value);
System.out.println("getMonthValue = " + date.getMonthValue());
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
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();
}
}
}
运行结果:
month = 4
today = 17
date = 2023-04-01
today - 1 = 16
day = 17
date2 = 2023-04-02
weekday = SATURDAY
value = 6
getMonthValue = 4
Mon Tue Wed Thu Fri Sat Sun
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17* 18 19 20 21 22 23
24 25 26 27 28 29 30
Process finished with exit code 0