Java如何使用TemporalField访问日期时间值?

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