在下面的示例中,我们将学习如何操作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