Java8 time包下的日期类的对象创建

Java8新的日期包下新增了众多的日期和时间操作类,这些类基本都是不可变的,并且构造器是私有的,不能直接new出来,但是提供了几种方法获取这些日期和时间类的对象。

这里我们介绍两种now()方法和of()方法。

now()方法可以根据当前日期或时间创建实例,可以不需要任何参数,直接创建日期和时间对象,其带有参数的方法一般是指定时区的。

of()方法可以根据给定的参数生成对应的日期/时间对象,例如LocalDate的of方法,可以使用3个参数分别来指定年、月、日。

我们看代码:

/**
 * 创建
 * time的日期类的创建
 * @Auther: www.itzhimei.com
 * @Description:
 */
public class P1_CreateObject {

    public static void main(String[] args) {
        //时间格式为国际标准时间
        Instant instant = Instant.now();
        //时间格式为:年月日
        LocalDate localDate = LocalDate.now();
        //时间格式为:时分秒纳秒
        LocalTime localTime = LocalTime.now();
        //时间格式为:年月日T时分秒纳秒
        LocalDateTime localDateTime = LocalDateTime.now();
        //时间格式为:年月日时分秒毫秒+偏移量/时区
        ZonedDateTime zonedDateTime = ZonedDateTime.now();

        System.out.println(instant);
        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(localDateTime);
        System.out.println(zonedDateTime);

        System.out.println("======================================");

        //时间格式为国际标准时间
        Instant instantOf = Instant.ofEpochSecond(1000000000L);
        //时间格式为:年月日
        LocalDate localDateOf = LocalDate.of(2021,10,5);
        //时间格式为:时分秒纳秒
        LocalTime localTimeOf = LocalTime.of(15,20);
        //时间格式为:年月日T时分秒纳秒
        LocalDateTime localDateTimeOf = LocalDateTime.of(localDateOf,localTimeOf);
        //时间格式为:年月日时分秒毫秒+偏移量/时区
        ZonedDateTime zonedDateTimeOf = ZonedDateTime.of(localDateTimeOf, ZoneId.systemDefault());

        System.out.println(instantOf);
        System.out.println(localDateOf);
        System.out.println(localTimeOf);
        System.out.println(localDateTimeOf);
        System.out.println(zonedDateTimeOf);
    }
}

输出:

2021-06-13T06:16:20.172Z
2021-06-13
14:16:20.215
2021-06-13T14:16:20.215
2021-06-13T14:16:20.216+08:00[Asia/Shanghai]
======================================
2001-09-09T01:46:40Z
2021-10-05
15:20
2021-10-05T15:20
2021-10-05T15:20+08:00[Asia/Shanghai]