美文网首页
Date 相关类之 Instant

Date 相关类之 Instant

作者: 七喜丶 | 来源:发表于2022-07-05 17:05 被阅读0次

一、概述

时间类一直是代码开发中经常用到的东西,时间类在JDK中刚出现到国内最常用的1.8版本,一共迭代了三次。分别是Date类、Calendar类和LocalDateTime类

1.Date类是JDK1.0时期推出来的第一代时间类,Date类最常用的方式是对获取当前时间,并使用SimpleDateFormat对时间进行格式化。

  1. Calendar类是JDK1.1推出的,用来代替Date类中得到年、月、日、小时等时间元素的api, Calendar提供了一系列获取时间元素的api,并且使用起来也比较简单。他更像是对Date类的增强
  2. LocalDateTime类是JDK1.8对时间类做一次大更新。java.time包中提供了四个常用的时间类,分别是Instant、LocalDate、LocalTime、LocalDateTime.
    Instant:提供一个更高精度的时间戳
    LocalDate:年-月-日
    LocalTime:时:分:秒.毫秒
    LocalDateTime: 年-月-日T时:分:秒.毫秒

二、Instant类
Instant类代表的事某个时间(类似java.util.Date),它是精确的纳秒的(而不是像旧版本的Date精确到毫秒)。如果使用纳秒去表示一个时间则原来使用一个Long类型是不够的,需要占用更多一点的存储空间,实际上其内部是由二个Long字段组成,第一个部分保存的事自标准Java计算时代(就是1970年1月1日开始)到现在的秒数,第二部分保存的是纳秒数

1. 时间截取

Instant.now ().truncatedTo (ChronoUnit.DAYS);   // 截取到天
Instant.now ().truncatedTo (ChronoUnit.HOURS);  // 截取到小時
Instant.now ().truncatedTo (ChronoUnit.MINUTES);// 截取到分組
Instant.now ().truncatedTo (ChronoUnit.SECONDS);// 截取到秒
2. 时间的增加或者减少

Instant.now ().plus (1, ChronoUnit.DAYS);    // 增加一天
Instant.now ().plus (1, ChronoUnit.HOURS);   // 增加一個小時
Instant.now ().plus (1, ChronoUnit.MINUTES); // 增加一分鐘
Instant.now ().plus (1, ChronoUnit.SECONDS); // 增加一秒

instant.now ().plus(Duration.ofDays(1));
instant.now ().plus(Period.ofDays(1));
 
Instant.now ().minus (1, ChronoUnit.DAYS);    // 减少一天
Instant.now ().minus (1, ChronoUnit.HOURS);   // 减少一個小時
Instant.now ().minus (1, ChronoUnit.MINUTES); // 减少一分鐘
Instant.now ().minus (1, ChronoUnit.SECONDS); // 减少一秒

instant.now ().minus(Duration.ofDays(1));
instant.now ().minus(Period.ofDays(1));

3. 时间的差值

ChronoUnit.DAYS.between(Instant.now(), Instant.now().plus(-1, ChronoUnit.DAYS));
ChronoUnit.MINUTES.between(Instant.now(), Instant.now().plus(1, ChronoUnit.MINUTES));
ChronoUnit.HOURS.between(Instant.now(), Instant.now().plus(-1, ChronoUnit.HOURS));
ChronoUnit.SECONDS.between(Instant.now(), Instant.now().plus(1, ChronoUnit.SECONDS));
4. 时间的比较

Instant.now().compareTo(Instant.now().plus(-1, ChronoUnit.DAYS))
Instant.now().compareTo(Instant.now().plus(2, ChronoUnit.DAYS))

相关文章

网友评论

      本文标题:Date 相关类之 Instant

      本文链接:https://www.haomeiwen.com/subject/aoesbrtx.html