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]