在下面的示例中,我们将学习如何操作LocalDate对象。有许多方法可用于更改LocalDate对象的值。例如,我们可以更改对象的年,月和日LocalDate。我们可以用类似的方法withYear(),withDayOfMonth(),plusYears(),minusMonths(),等所有这些方法都将返回一个新LocalDate的对象,原来LocalDate将保持不变。
让我们看下面的代码示例,以演示如何操纵LocalDate对象的值。
package org.nhooo.example.datetime; import java.time.LocalDate; import java.time.Month; import java.time.temporal.ChronoField; import java.time.temporal.ChronoUnit; public class LocalDateManipulation { public static void main(String[] args) { absoluteAttributeManipulations(); relativeAttributeManipulations(); } private static void relativeAttributeManipulations() { System.out.println("LocalDateManipulation.relativeAttributeManipulations"); LocalDate date1 = LocalDate.of(2015, Month.AUGUST, 17); LocalDate date2 = date1.minusYears(70); LocalDate date3 = date2.plusMonths(10); LocalDate date4 = date3.minusDays(15); LocalDate date5 = date4.plusWeeks(52); LocalDate date6 = date5.minus(52, ChronoUnit.WEEKS); System.out.println("of(2015, Month.AUGUST, 17) => " + date1); System.out.println("date1.minusYears(70) => " + date2); System.out.println("date1.plusMonths(10) => " + date3); System.out.println("date3.minusDays(15) => " + date4); System.out.println("date4.plusWeeks(52) => " + date5); System.out.println("date5.minus(52, ChronoUnit.WEEKS) => " + date6); } private static void absoluteAttributeManipulations() { System.out.println("LocalDateManipulation.absoluteAttributeManipulations"); LocalDate date1 = LocalDate.of(2016, Month.JANUARY, 1); LocalDate date2 = date1.withYear(2010); LocalDate date3 = date2.withMonth(Month.DECEMBER.getValue()); LocalDate date4 = date3.withDayOfMonth(15); LocalDate date5 = date4.with(ChronoField.DAY_OF_YEAR, 100); System.out.println("of(2016, Month.JANUARY, 1) => " + date1); System.out.println("date1.withYear(2010) => " + date2); System.out.println("date2.withMonth(Month.DECEMBER.getValue()) => " + date3); System.out.println("date3.withDayOfMonth(15) => " + date4); System.out.println("date4.with(ChronoField.DAY_OF_YEAR, 100) => " + date5); } }
此代码段的结果是:
LocalDateManipulation.absoluteAttributeManipulations of(2016, Month.JANUARY, 1) => 2016-01-01 date1.withYear(2010) => 2010-01-01 date2.withMonth(Month.DECEMBER.getValue()) => 2010-12-01 date3.withDayOfMonth(15) => 2010-12-15 date4.with(ChronoField.DAY_OF_YEAR, 100) => 2010-04-10 LocalDateManipulation.relativeAttributeManipulations of(2015, Month.AUGUST, 17) => 2015-08-17 date1.minusYears(70) => 1945-08-17 date1.plusMonths(10) => 1946-06-17 date3.minusDays(15) => 1946-06-02 date4.plusWeeks(52) => 1947-06-01 date5.minus(52, ChronoUnit.WEEKS) => 1946-06-02