如何使用java.time.LocalDateTime类?

该java.time.LocalDateTime级表示没有时区的日期和时间的信息。我们可以创建LocalDateTime使用可用的静态工厂方法,如of()方法或通过结合一个实例LocalDate和LocalTime。

以下代码片段将向您展示两种方式。首先,我们从使用of()可以传递诸如年,月,日,小时,分钟和秒之类的参数的方法开始。在接下来的一行,我们也用of()的方法,但这次我们传递的一个实例LocalDate,并LocalTime作为参数。

package org.nhooo.example.datetime;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;

public class LocalDateTimeDemo {
    public static void main(String[] args) {
        // 使用of()创建LocalDateTime的实例
        // 具有完整日期和时间参数的静态工厂方法。
        LocalDateTime dateTime =
                LocalDateTime.of(2014, Month.SEPTEMBER, 11, 16, 15, 15);
        System.out.println("dateTime  = " + dateTime);

        // 结合LocalDate和LocalTime创建一个新的
        // LocalDateTime的实例。
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime2 = LocalDateTime.of(date, time);
        System.out.println("dateTime2 = " + dateTime2);

        // 使用时间从LocateDate创建LocalDateTime
        // atTime()方法。
        LocalDateTime dateTime3 = date.atTime(16, 15, 15);
        LocalDateTime dateTime4 = date.atTime(time);
        System.out.println("dateTime3 = " + dateTime3);
        System.out.println("dateTime4 = " + dateTime4);

        // 使用以下命令从LocalTime创建带有日期的LocalDateTime
        // atDate()方法。
        LocalDateTime dateTime5 = time.atDate(date);
        System.out.println("dateTime5 = " + dateTime5);

        // 使用以下命令从LocalDateTime获取LocalDate和LocalTime
        // toLocalDate()和toLocalTime()方法。
        LocalDate date1 = dateTime5.toLocalDate();
        LocalTime time1 = dateTime5.toLocalTime();
        System.out.println("date1 = " + date1);
        System.out.println("time1 = " + time1);
    }
}

我们也可以创建的一个实例LocalDateTime,通过使用LocalDate的atTime()方法或LocalTime的atDate()如在代码段上方观察方法。

在代码片段的最后,您可以看到如何使用and方法从实例获取LocalDateor或LocalTime信息。LocalDateTimetoLocalDate()toLocalTime()

运行此代码段将为您提供以下结果:

dateTime  = 2014-09-11T16:15:15
dateTime2 = 2014-09-11T16:25:37.891
dateTime3 = 2014-09-11T16:15:15
dateTime4 = 2014-09-11T16:25:37.891
dateTime5 = 2014-09-11T16:25:37.891
date1 = 2014-09-11
time1 = 16:25:37.891