Java LocalDate 是 Java 8 中引入的一个新的日期 API,用于处理日期,但不包括时间信息。它提供了一种更简单、更直观的方式来处理日期,比之前的 java.util.Date 类更加灵活和强大。下面我们将详细介绍 Java LocalDate 的常用方法和使用场景。
- 创建日期对象
要创建一个 LocalDate 对象,可以使用以下方法之一:
- 通过调用 LocalDate 类的默认构造函数创建一个表示当前日期的对象:
LocalDate today = LocalDate.now();
- 通过传递年、月和日参数来创建一个日期对象:
LocalDate date = LocalDate.of(2023, 6, 24);
- 通过传递一个 java.time.temporal.TemporalAccessor 对象来创建一个日期对象:
LocalDate date = LocalDate.from(temporal);
- 获取日期信息
LocalDate 类提供了一些方法来获取日期的各个部分,例如年、月和日:
- getYear():获取年份
- getMonth():获取月份(返回值是 Month 枚举类型)
- getDayOfMonth():获取日(一个月中的第几天)
- 修改日期
LocalDate 类还提供了一些方法来修改日期对象:
- withYear(int year):将年份设置为指定值
- withMonth(int month):将月份设置为指定值(注意,月份是从 1 开始的)
- withDayOfMonth(int dayOfMonth):将日设置为指定值(一个月中的第几天)
- 日期计算
LocalDate 类提供了几种方法来计算两个日期之间的差异:
- until(TemporalAmount temporalAmount, TemporalUnit unit):计算两个日期之间的差异,返回一个表示差异的 TemporalAmount 对象。可以指定要计算的差异单位(例如天、月、年等)。
- isBefore(Temporal temporal):检查当前日期是否在指定日期之前。
- isAfter(Temporal temporal):检查当前日期是否在指定日期之后。
- isEqual(Temporal temporal):检查当前日期是否与指定日期相等。
- 日期格式化和解析
LocalDate 类还提供了一些方法来格式化和解析日期:
- format(DateTimeFormatter formatter):使用指定的 DateTimeFormatter 将日期格式化为字符串。
- parse(CharSequence text, DateTimeFormatter formatter):使用指定的 DateTimeFormatter 将字符串解析为日期对象。
- 其他操作
- now(): 获取当前日期。
- of(): 通过年份、月份和日期创建日期对象。
- from(): 从 TemporalAccessor 对象创建日期对象。
- isSupported(TemporalUnit unit):检查是否支持指定的时间单位。
- plus(long amountToAdd, TemporalUnit unit):向当前日期添加指定的时间量。
- minus(long amountToSubtract, TemporalUnit unit):从当前日期减去指定的时间量。
- truncatedTo(TemporalUnit unit):将当前日期截断为指定的时间单位(例如天、月、年等)。
- atStartOfDay(ZoneId zone):获取表示当前日期在指定时区中当天开始时的 ZonedDateTime 对象。
- atEndOfDay(ZoneId zone):获取表示当前日期在指定时区中当天结束时的 ZonedDateTime 对象。
- 使用示例:
下面是一个简单的示例,演示如何使用 LocalDate 类来创建、修改和比较日期:import java.time.LocalDate;import java.time.Month;import java.time.temporal.ChronoUnit;import java.util.stream.IntStream;import java.util.stream.Stream;