Java中的LocalDate及其示例
java.time.LocalDate类是Java 8中添加的新日期和时间API的一部分,该API表示ISO-8601日历系统中的日期,例如2019-10-03. LocalDate类不存储或者表示时间或者时区。
LocalDate类是不可变的,因此是线程安全的。它也被标记为final,因此无法扩展。
在这篇文章中,我们将看到一些示例,这些示例演示Java LocalDate类的用法。
创建LocalDate的实例
LocalDate类没有任何公共构造函数来获取实例,我们将使用工厂方法。
1.使用now()从默认时区的系统时钟获取当前日期的实例。
LocalDate currentDate = LocalDate.now(); System.out.println(currentDate); //2019-10-26
2.使用of()方法从年,月和日中获取LocalDate的实例。
LocalDate date = LocalDate.of(2019, 10, 18); System.out.println(date); // 2019-10-18
从LocalDate获取日期值
有一些方法可以从LocalDate实例获取日,月,年值。
public class FormatDate { public static void main(String[] args) { LocalDate date = LocalDate.of(2019, 10, 18); System.out.println("Year-" + date.getYear()); // Using java.time.Month Enum System.out.println("Month-" + date.getMonth()); // Month as int value System.out.println("Month-" + date.getMonthValue()); System.out.println("Day-" + date.getDayOfMonth()); System.out.println("Day of week-" + date.getDayOfWeek()); System.out.println("Day of year-" + date.getDayOfYear()); } }
输出:
Year-2019 Month-OCTOBER Month-10 Day-18 Day of week-FRIDAY Day of year-291
使用LocalDate检查年份是否为a年
使用Java中LocalDate类的isLeapYear()方法,可以检查年份是否为is年。
public class FormatDate { public static void main(String[] args) { LocalDate localDate = LocalDate.of(2019, 10, 18); String msg = localDate.isLeapYear()?"is a leap year":"is not a leap year"; System.out.println(localDate.getYear() + " " + msg); localDate = LocalDate.of(2016, 10, 18); msg = localDate.isLeapYear()?"is a leap year":"is not a leap year"; System.out.println(localDate.getYear() + " " + msg); } }
输出:
2019 is not a leap year 2016 is a leap year
使用LocalDate进行日期计算
有一些方法可以从LocalDate添加或者减去天,月和年。
plus(longToToTo,TemporalUnit单位)–返回此日期的副本,其中添加了指定的数量。
plus(TemporalAmount amountToAdd)–返回此日期的副本,其中添加了指定的数量。
plusDays(long daysToAdd)–返回此LocalDate的副本,其中添加了指定的天数。
plusMonths(long monthsToAdd)–返回此LocalDate的副本,其中添加了指定的月数。
plusWeeks(long weekToAdd)–返回此LocalDate的副本,其中添加了指定的周数。
plusYears(long yearsToAdd)–返回此LocalDate的副本,其中添加了指定的年数。
minus(long amountToSubtract,TemporalUnit单位)–返回该日期的副本,其中减去指定的数量。
minus(TemporalAmount amountToSubtract)–返回该日期的副本,其中减去指定的数量。
minusDays(long daysToSubtract)–返回此LocalDate的副本,其中减去指定的天数。
minusMonths(long monthsToSubtract)–返回此LocalDate的副本,其中减去指定的月数。
minusWeeks(long weekToSubtract)–返回此LocalDate的副本,其中减去指定的周数。
minusYears(long yearsToSubtract)–返回此LocalDate的副本,其中减去指定的年数。
LocalDate localDate = LocalDate.of(2019, Month.OCTOBER, 18); System.out.println("Created Local Date - " + localDate);//2019-10-18 System.out.println("Date after subtraction - " + localDate.minusDays(40));//2019-09-08 System.out.println("Date after year subtraction - " + localDate.minusYears(2));//2017-10-18
LocalDate localDate = LocalDate.of(2019, Month.OCTOBER, 18); System.out.println("Created Local Date - " + localDate);//2019-10-18 System.out.println("Date after addition - " + localDate.plusDays(40));//2019-11-27 System.out.println("Date after year addition - " + localDate.plusYears(2));//2021-10-18
在Java中比较LocalDate
为了比较两个LocalDate实例,有以下方法:
compareTo(ChronoLocalDate other)–将此日期与另一个日期进行比较。返回比较器值,如果小于则返回负数,如果大于则返回正数。
isAfter(ChronoLocalDate other)–检查该日期是否在指定的日期之后。如果此日期晚于指定日期,则返回true。
isBefore(ChronoLocalDate other)–检查此日期是否在指定日期之前。如果此日期早于指定日期,则返回true。
isEqual(ChronoLocalDate other)–检查此日期是否等于指定的日期。如果此日期等于指定的日期,则返回true。
public class FormatDate { public static void main(String[] args) { LocalDate ld1 = LocalDate.of(2019, Month.OCTOBER, 18); LocalDate ld2 = LocalDate.of(2019, Month.SEPTEMBER, 20); System.out.println(ld1.compareTo(ld2)); System.out.println(ld2.compareTo(ld1)); System.out.println(ld1.isAfter(ld2)); System.out.println(ld1.isBefore(ld2)); System.out.println(ld1.isEqual(ld2)); } }
输出:
1 -1 true false false
将字符串转换为LocalDate
检查此帖子以获取String到LocalDate的转换将Java中的String转换为Date
将LocalDate转换为字符串
检查此帖子以将LocalDate转换为String将Java中的日期转换为String