Java如何使用TemporalAdjuster操作LocalDate对象?
在前面的示例中,我们LocalDate使用诸如plusMonths()或的方法通过按天,月,年对日期对象的值进行加或减来操纵的值minusDays()。或者使用类似withYear()或的方法更改日期对象的年或月withMonth()。
但是有些时候我们想要操纵日期对象,以便获得月的第一天或月的最后一天。我们要操纵日期值,以将日期提前到当天或当年最后一天之后的第一个星期一。
要以这种方式操作日期对象,我们可以使用with()方法并将TemporalAdjuster对象作为参数传递。幸运的是,日期和时间API已经提供了一些常用的TemporalAdjuster。这些TemporalAdjuster是作为静态工厂方法提供的,我们可以在java.time.temporal.TemporalAdjusters类中找到它们。
以下示例是使用TemporalAdjuster/TemporalAdjusters类操纵日期对象的代码段。
package org.nhooo.example.datetime; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; public class DateManipulationWithTemporalAdjuster { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("Current date = " + date); LocalDate date1 = date.with(TemporalAdjusters.firstDayOfMonth()); System.out.println("First day of month = " + date1); LocalDate date2 = date.with(TemporalAdjusters.lastDayOfMonth()); System.out.println("Last day of month = " + date2); LocalDate date3 = date.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); System.out.println("Next Monday = " + date3); LocalDate date4 = date.with(TemporalAdjusters.lastDayOfYear()); System.out.println("Last day of year = " + date4); } }
代码段的结果是:
Current date = 2016-03-06 First day of month = 2016-03-01 Last day of month = 2016-03-31 Next Monday = 2016-03-07 Last day of year = 2016-12-31
下表显示了TemporalAdjusters该类提供的静态工厂方法的完整信息。