LocalDate和LocalTime可能是您将使用的java8日期和时间API的前两个类。LocalDate对象的一个实例是一个不可变的对象,表示一天中没有时间的日期,而LocalTime对象的另一个实例是一个不可变的对象,表示一个没有日期信息的时间。
LocalDate 对象具有获取与日期相关的信息的方法,如 getYear ()、 getMonth ()、 getDayOfMonth ()。而 LocalTime 对象具有获取与时间相关的信息的方法,如 getHour ()、 getMinute ()、 getSecond ()。除了使用这些方法,我们还可以使用 TemporalField 接口访问这些对象的值。我们可以将 TemporalField 传递给 LocalDate 和 LocalTime 对象的 get ()方法。TemporalField 是一个接口,其实现之一是 ChronoField 枚举,我们可以使用它来获取值。
让我们在下面的代码片段中查看一些示例:
package org.nhooo.example.datetime; import java.time.LocalDate; import java.time.LocalTime; import java.time.temporal.ChronoField; public class DateTimeValueTemporalField { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("Date = " + date); System.out.println("Year = " + date.getYear()); System.out.println("Year = " + date.get(ChronoField.YEAR)); System.out.println("Month= " + date.getMonth().getValue()); System.out.println("Month= " + date.get(ChronoField.MONTH_OF_YEAR)); System.out.println("Date = " + date.getDayOfMonth()); System.out.println("Date = " + date.get(ChronoField.DAY_OF_MONTH)); System.out.println("DOW = " + date.getDayOfWeek().getValue()); System.out.println("DOW = " + date.get(ChronoField.DAY_OF_WEEK) + "\n"); LocalTime time = LocalTime.now(); System.out.println("Time = " + time); System.out.println("Hour = " + time.getHour()); System.out.println("Hour = " + time.get(ChronoField.HOUR_OF_DAY)); System.out.println("Minute= " + time.getMinute()); System.out.println("Minute= " + time.get(ChronoField.MINUTE_OF_HOUR)); System.out.println("Second= " + time.getSecond()); System.out.println("Second= " + time.get(ChronoField.SECOND_OF_MINUTE)); System.out.println("Nano = " + time.getNano()); System.out.println("Nano = " + time.get(ChronoField.NANO_OF_SECOND)); } }
上面的代码片段的输出是:
Date = 2020-04-20 Year = 2020 Year = 2020 Month= 4 Month= 4 Date = 20 Date = 20 DOW = 1 DOW = 1 Time = 16:06:11.389185 Hour = 16 Hour = 16 Minute= 6 Minute= 6 Second= 11 Second= 11 Nano = 389185000 Nano = 389185000