JDK8新日期时间API
比较重要的三个类:LocalDate类,LocalTime类,LocalDateTime类(ISO-8601日历系统 即 公历)
- LocalDate表示IOS格式(yyyy-MM-dd)的日期
- LocalTime表示当前时间
- LocalDateTime表示当前日期和时间
ZoneId类
//ZoneId类中包括了所有的时区,可以使用getAvailableZoneIds来查看所有的时区信息,返回的是String类型的Set集合
Set<String> zoneid = ZoneId.getAvailableZoneIds();
//ZoneId的of可以返回传入指定时区的ZoneId对象,此对象可以传入LocalDateTime等的now方法中用来创建指定时区的对象
ZoneId shanghai = ZoneId.of("Asia/Shanghai");
ZonedDateTime
用法其实与LocalDateTime一样,只不过比LocalDateTime多了个时区信息
//ZonedDateTime:带时区的日期时间
// ZonedDateTime的now():获取本时区的ZonedDateTime对象
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
// ZonedDateTime的now(ZoneId id):获取指定时区的ZonedDateTime对象
ZonedDateTime zonedDateTime1 = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
System.out.println(zonedDateTime1);
对比LocaDateTime
ZonedDateTime zone= ZonedDateTime.now();
System.out.println(zone);
LocalDateTime local = LocalDateTime.now();
System.out.println(local);
运行结果:
从运行结果可以看出来ZonedDateTime比LocalDateTime多出来了时区信息
Instant类
- Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间 戳。
- 在处理时间和日期的时候,我们通常会想到年,月,日,时,分,秒。然而,这只是 时间的一个模型,是面向人类的。第二种通用模型是面向机器的,或者说是连 续的。在此模型中,时间线中的一个点表示为一个很大的数,这有利于计算机 处理。在UNIX中,这个数从1970年开始,以秒为的单位;同样的,在Java中, 也是从1970年开始,但以毫秒为单位。
- java.time包通过值类型Instant提供机器视图,不提供处理人类意义上的时间 单位。Instant表示时间线上的一点,而不需要任何上下文信息,例如,时区。 概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC)开始的秒 数。因为java.time包是基于纳秒计算的,所以Instant的精度可以达到纳秒级。
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01 日08时00分00秒)起至现在的总秒数。
格式化和解析日期时间
格式化:将日期时间类型转化为字符串
解析:将指定的字符串转化为日期时间
java.time.format.DateTimeFormatter 类:该类提供了三种格式化方法:
✦预定义的标准格式。如: ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
✦本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG)
✦自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
类似于SimpleDateTime的用法
g-CSVps98h-1574136739210)]
类似于SimpleDateTime的用法