Java 8 (二) 新的时间API

 新的时间API

一)时间线

1.Instant对象:表示时间轴上的一个点,原点为1970-1-1的午夜。

1)当前时间点:

Instant.now()

2)可以使用equals和compareTo方法来比较两个瞬时点

3)计算两个瞬时点的距离:

Instant start = Instant.now();
sleep();
Instant end = Instant.now();
Duriation time = Duriation.between(start, end);
long mills = time.toMills()

2.Duration对象:表示一段时间。

可以使用toNanos、toMills、toSeconds等得到以各种时间单位来表示的Duriation对象。

注意Instant和Duration类都是final。

二)本地日期

LocalDate对象:不含时区信息,包含年份,月份,当月天数的日期。无法对应时间轴上的时间点。

Period对象:用于计算本地日期时间段的对象。

三)日期校正器

如果要计算"每月的第三个周三"这样的日期,就可以使用日期校正器。

TemporalAdjusters对象:含有校正日期的一系列方法。

LocalDate.of(2018, 5, 18)
                .with(TemporalAdjusters.next(DayOfWeek.MONDAY));

也可以通过实现TemporalAdjuster接口来实现自己的校正器。

四)本地时间

LocalTime对象:表示一天中的某个时间

LocalDateTime对象: 表示日期和时间

五)带时区的时间

ZonedDateTime:处理带时区时间的类

ZonedId:存储时区

带时区的时间可以转换为Instant对象。

六)格式化和解析

1.格式化

DateTimeFormatter:

String format = DateTimeFormatter.ISO_DATE_TIME.
                withLocale(Locale.CHINESE).format(LocalDate.now());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E yyyy-MM-dd HH:mm");

2.从字符串解析出日期时间:

LocalDate.parse("1990-3-26");

七)与遗留代码互操作

在Java8中java.util.Date中新增了toInstant方法和静态from方法,用来转换Date和Instant。

在java.util.GregorianCalendar类中添加了toZonedDateTime方法和静态from方法。

 

Simple is important!
原文地址:https://www.cnblogs.com/Shadowplay/p/9035690.html