如何使用java.time.LocalDate类?

JDK8的LocateDate类是表示有关日期的信息的类。它不包括有关一天中的时间信息,也没有有关时区的信息。不变对象中此类的一个实例。

要创建LocateDate类的实例,我们可以使用of()静态方法工厂。我们传递参数,如year,month和day到这个静态工厂方法。month的值可以是1到12之间的整数,也可以使用java.time.Month枚举指定的值,例如Month.JANUARY。

下面的代码段显示了如何使用LocalDate该类。

package org.nhooo.example.datetime;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;

public class LocalDateDemo {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2014, 9, 7);

        int year = date.getYear();
        Month month = date.getMonth();
        int day = date.getDayOfMonth();

        DayOfWeek dow = date.getDayOfWeek();
        int monthLength = date.lengthOfMonth();
        boolean leapYear = date.isLeapYear();

        System.out.println("Year         = " + year);
        System.out.println("Month        = " + month);
        System.out.println("Day          = " + day);
        System.out.println("Dow          = " + dow);
        System.out.println("Month Length = " + monthLength);
        System.out.println("Leap Year    = " + leapYear);
    }
}

从上面的代码片段中可以看到,LocalDate该类还提供了一些从LocateDate实例获取值的方法。例如,您可以使用getYear()方法获得日期的年份。要获得月份,我们可以使用getMonth()将返回Month枚举的方法。为了获得成功,我们可以使用该getDayOfMonth()方法。

我们还可以获得诸如月份的长度之类的信息,并检查该月份代表的年份LocalDate是否为a年。运行上面的代码片段将为您提供以下结果:

Year         = 2014
Month        = SEPTEMBER
Day          = 7
Dow          = SUNDAY
Month Length = 30
Leap Year    = false

除了使用上面显示的方法从一个LocalDate实例访问值之外,我们还可以使用TemporalField下面的代码片段中演示的方法。在这里,我们调用该get()方法并传递要使用ChronoField枚举读取的时态字段。该枚举实现TemporalField接口。

int year = date.get(ChronoField.YEAR);
int month = date.get(ChronoField.MONTH_OF_YEAR);
int day = date.get(ChronoField.DAY_OF_MONTH);

System.out.println("year  = " + year);
System.out.println("month = " + month);
System.out.println("day   = " + day);