java.time.LocalDate的优点
Posted 思无
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.time.LocalDate的优点相关的知识,希望对你有一定的参考价值。
最近搞东西的时候要操作时间,就去网上了解一下时间操作被用的最多的几个类java.util.Calendar、java.util.Date、java.time.LocalDate,这三个时间类中java.time.LocalDate是由java 8新提供的,记录下三个类的特点。
-
java.util.Date、java.util.Calendar
Date和Calendar不支持时区,且非线程安全。Date可读性差,需要对其进行格式化,而且Date对时间处理比较麻烦,想获取某年、某月、某星期之类的时间太难了,可能有人会说Date不是有getYear、getMonth等这些方法啊,获取年月日很简单,但要知道,Date的这些方法都被弃用了。
-
java.time.LocalDate
LocalDate是不可变的和线程安全的时间类,且支持时区设置,它是Java 8提供的全新日期时间类。
LocalDate的常用API:
方法名 返回类型 说明 getYear() int 获取当前日期的年 getMonth() Month 获取当前日期的月份对象 getMonthValue() int 获取当前日期的月 getDayOfWeek() DayOfWeek 获取当前日期对应星期几字段 getDayOfMonth() int 获取当前日期是该月第几天 getDayOfYear() int 获取当前日期是该年第几天 withYear(int year) LocalDate 修改当前日期的年份,如果修改后日期无效,将被更改为修改后日期该月的最后一个有效日期 withMonth(int month) LocalDate 修改当前日期的月份(1-12),如果日期无效,将被更改为该月份最后一个有效日期 withDayOfMonth(int dayOfMonth) LocalDate 修改当前日期在当月的第几天(1-31天,根据月份不同而变化),如果修改后日期无效,抛出异常 isLeapYear() boolean 是否是闰年,true:是闰年,false:平年 lengthOfMonth() int 获取当前日期所在月份的总天数 lengthOfYear() int 获取当前日期所在年份的总天数 plusYears(long yearsToAdd) LocalDate 当前日期所在年份增加指定年份数 plusMonths(long monthsToAdd) LocalDate 当前日期所在月份增加指定月份数 plusWeeks(long weeksToAdd) LocalDate 当前日期增加指定的周数 plusDays(long daysToAdd) LocalDate 当前日期增加指定的天数 minusYears(long yearsToSubtract) LocalDate 当前日期所在年份减去指定年份数 minusMonths(long monthsToSubtract) LocalDate 当前日期所在月份减去指定月份数 minusWeeks(long weeksToSubtract) LocalDate 当前日期减去指定的周数 minusDays(long daysToSubtract) LocalDate 当前日期减去指定的天数 compareTo(ChronoLocalDate other) int 比较当前日期和other日期的大小,返回值如果为正则当前日期较大,为负则other日期较大 isBefore(ChronoLocalDate other) boolean 获取当前日期是否在other日期之前, isAfter(ChronoLocalDate other) boolean 获取当前日期是否在other日期之后 isEqual(ChronoLocalDate other) boolean 获取当前日期是否与other日期相等
常用API方法:
LocalDate now = LocalDate.now(); System.out.println("获取当前日期的LocalDate对象:"+now); LocalDate date2 = LocalDate.parse("2012-02-29"); System.out.println("获取指定字符串日期的LocalDate对象:"+date2); int year = now.getYear(); System.out.println("getYear()获取当前日期的年份:"+year); Month month = now.getMonth(); System.out.println("getMonth()获取当前日期的月份对象:"+month); int monthNum = now.getMonthValue(); System.out.println("getMonthValue()获取当前日期的月份:"+monthNum); DayOfWeek dayofWeek = now.getDayOfWeek(); System.out.println("getDayOfWeek()获取当前日期对应的星期几字段:"+monthNum); int dayOfMonth = now.getDayOfMonth(); System.out.println("getDayOfMonth()获取当前日期在当前月的第几天:"+dayOfMonth); int dayOfYear = now.getDayOfYear(); System.out.println("getDayOfYear()获取当前日期在当前年的第几天:"+dayOfYear); LocalDate nowYear = now.withYear(2013); System.out.println("withYear()修改当前日期年份: "+nowYear); LocalDate nowMonth = now.withMonth(3); System.out.println("withMonth()修改当前日期月份: "+nowMonth); LocalDate nowDayOfMonth = now.withDayOfMonth(21); System.out.println("withDayOfMonth()修改当前日期在当月的天数: "+nowDayOfMonth); boolean isLeapYear = now.isLeapYear(); System.out.println("isLeapYear()获取当前日期是否是闰年: "+isLeapYear); int lengthOfMonth = now.lengthOfMonth(); System.out.println("lengthOfMonth()获取当前日期所在月份总天数: "+lengthOfMonth); int lengthOfYear = now.lengthOfYear(); System.out.println("lengthOfYear()获取当前日期所在年份总天数: "+lengthOfYear); LocalDate nowPlusYears = now.plusYears(-2); System.out.println("plusYears当前日期所在年份增加指定年份数:"+nowPlusYears); LocalDate nowPlusMonths = now.plusMonths(2); System.out.println("plusMonths当前日期所在月份增加指定月份数:"+nowPlusMonths); LocalDate nowPlusWeeks = now.plusWeeks(2); System.out.println("plusMonths当前日期增加指定星期周数:"+nowPlusWeeks); LocalDate nowDays = now.plusDays(3); System.out.println("nowDays当前日期增加指定天数:"+nowDays); int compareTo = now.compareTo(date2); System.out.println("compareTo比较当前日期与指定日期的大小:"+compareTo); boolean before = now.isBefore(date2); System.out.println("isBefore获取当前日期是否在指定日期之前:"+before); boolean after = now.isAfter(date2); System.out.println("isAfter获取当前日期是否在指定日期之后:"+after); boolean equal = now.isEqual(date2); System.out.println("isEqual获取当前日期是否与指定日期相等:"+equal);
运行结果:
获取当前日期的LocalDate对象:2020-07-07 获取指定字符串日期的LocalDate对象:2012-02-29 getYear()获取当前日期的年份:2020 getMonth()获取当前日期的月份对象:JULY getMonthValue()获取当前日期的月份:7 getDayOfWeek()获取当前日期对应的星期几字段:7 getDayOfMonth()获取当前日期在当前月的第几天:7 getDayOfYear()获取当前日期在当前年的第几天:189 withYear()修改当前日期年份: 2013-07-07 withMonth()修改当前日期月份: 2020-03-07 withDayOfMonth()修改当前日期在当月的天数: 2020-07-21 isLeapYear()获取当前日期是否是闰年: true lengthOfMonth()获取当前日期所在月份总天数: 31 lengthOfYear()获取当前日期所在年份总天数: 366 plusYears当前日期所在年份增加指定年份数:2018-07-07 plusMonths当前日期所在月份增加指定月份数:2020-09-07 plusMonths当前日期增加指定星期周数:2020-07-21 nowDays当前日期增加指定天数:2020-07-10 compareTo比较当前日期与指定日期的大小:8 isBefore获取当前日期是否在指定日期之前:false isAfter获取当前日期是否在指定日期之后:true isEqual获取当前日期是否与指定日期相等:false
以上是关于java.time.LocalDate的优点的主要内容,如果未能解决你的问题,请参考以下文章
Spark Cassandra 连接器找不到 java.time.LocalDate
无法解决 android studio 中的符号“java.time.LocalDate”错误
插入数据时出错 java.time.LocalDate 在 SpringBoot 中包含字段 dateOfBirth 类型 LocalDate
玩 2.4 表单字段值绑定到 java.time.LocalDate 类型