Java8 LocalDate 使用详解
什么是LocalDate
LocalDate
是Java8中用于处理日期的类,它能表示一个ISO-8601标准的日期(如2019-03-29)。相比于Java中旧的日期类(如Date和Calendar)而言,LocalDate
有着更好的易用性、更加清晰的语义和更强大的功能。
基本用法
创建LocalDate
使用静态方法of
可以创建一个指定的日期:
LocalDate date = LocalDate.of(2019, 3, 29);
也可以使用now
方法获取当前日期:
LocalDate now = LocalDate.now();
获取日期信息
通过实例方法可以获取日期的各个部分,例如:
int year = date.getYear();//获取年份
Month month = date.getMonth();//获取月份,返回类型为Month枚举
int dayOfMonth = date.getDayOfMonth();//获取日
DayOfWeek dayOfWeek = date.getDayOfWeek();//获取星期几,返回类型为DayOfWeek枚举
int dayOfYear = date.getDayOfYear();//获取一年中的第几天
日期比较
通过compareTo
方法可以比较两个日期的先后顺序:
LocalDate date1 = LocalDate.of(2019, 3, 29);
LocalDate date2 = LocalDate.of(2020, 4, 30);
if(date1.compareTo(date2) < 0){
System.out.println(date1 + " 在 " + date2 + " 之前");
} else if(date1.compareTo(date2) > 0){
System.out.println(date1 + " 在 " + date2 + " 之后");
} else {
System.out.println(date1 + " 和 " + date2 + " 是同一天");
}
日期与字符串之间的转换
使用parse
方法可以将字符串转换成LocalDate
:
String strDate = "2019-03-29";
LocalDate date = LocalDate.parse(strDate);
使用format
方法可以将LocalDate
转换成字符串:
String strDate = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
示例
例1:计算两个日期之间相差的天数
LocalDate date1 = LocalDate.of(2019, 3, 29);
LocalDate date2 = LocalDate.of(2020, 4, 30);
Duration duration = Duration.between(date1.atStartOfDay(), date2.atStartOfDay());
long days = duration.toDays();
System.out.println("相差天数:" + days + " 天");
这里我们使用了java.time.Duration
类来计算两个日期之间的时间差。
例2:获取某个日期的当月第一天和最后一天
LocalDate date = LocalDate.of(2019, 3, 29);
LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());//当月第一天
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());//当月最后一天
System.out.println("当前日期:" + date);
System.out.println("当月第一天:" + firstDayOfMonth);
System.out.println("当月最后一天:" + lastDayOfMonth);
这里我们使用了TemporalAdjusters
类的静态方法来获取当月的第一天和最后一天。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java8 LocalDate 使用详解 - Python技术站