java8 ChronoUnit日期时间单位枚举类

前言

ChronoUnit是java8提供的一个枚举类,里面定义了很多表示日期/时间的枚举值,提供基于单元的访问来操纵日期,时间或日期时间, 通过实现TemporalUnit来扩展标准单元集。

一:ChronoUnit类概要

包目录:java.time.temporal
类型: 枚举类 public enum ChronoUnit implements TemporalUnit

ChronoUnit

一组标准的日期时间单位。

这组单元提供基于单元的访问来操纵日期,时间或日期时间。 可以通过实现TemporalUnit来扩展标准单元集。

这些单元适用于多个日历系统。例如,大多数非ISO日历系统定义年,月和日的单位,只是略有不同的规则。 每个单元的文档说明了它的运作方式。

实现要求:
这是一个最终的、不可变的和线程安全的枚举。

二:枚举值及含义

以下枚举值及描述在下面有更详细的描述,若表格中描述不清楚,可以看最下面的描述

Enum Constant描述
CENTURIES代表一个世纪概念的单位。
DAYS代表一天概念的单位。
DECADES代表十年概念的单位。
ERAS代表一个时代概念的单位。
FOREVER代表永恒概念的人工单位。
HALF_DAYS代表AM / PM中使用的半天概念的单位。
HOURS表示一小时概念的单位。
MICROS表示微秒概念的单位。
MILLENNIA代表千年概念的单位。
MILLIS表示毫秒概念的单位。
MINUTES表示一分钟概念的单位。
MONTHS代表一个月概念的单位。
NANOS代表纳秒概念的单位,是支持的最小时间单位。
SECONDS
WEEKS表示一周概念的单位。
YEARS代表一年概念的单位。

三:使用示例

 LocalDate today = LocalDate.now();
System.out.println("当前时间: " + today); //2021-12-02
//LocalDate plus(long amountToAdd, TemporalUnit unit)
LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
System.out.println("下周的时间: " + nextWeek); //2021-12-09
LocalDate nextMonth = today.plus(1, ChronoUnit.MONTHS);
System.out.println("下个月的时间: " + nextMonth); //2022-01-02
LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);
System.out.println("下一年的时间: " + nextYear);//2022-12-02
LocalDate nextDecade = today.plus(1, ChronoUnit.DECADES);
System.out.println("10年后的时间: " + nextDecade);//2031-12-02

ChronoUnit 枚举类代码

public enum ChronoUnit implements TemporalUnit {
    private final String name;
    private final Duration duration;

    private ChronoUnit(String name, Duration estimatedDuration) {
        this.name = name;
        this.duration = estimatedDuration;
    }
}

CENTURIES

CENTURIES("Centuries", Duration.ofSeconds(31556952L * 100L))
代表一个世纪概念的单位。 对于ISO日历系统,它等于100年。

当与其他日历系统一起使用时,它必须对应于整数天,并且通常是整数年。

DECADES

DECADES("Decades", Duration.ofSeconds(31556952L * 10L))
代表十年概念的单位。 对于ISO日历系统,它等于10年。

当与其他日历系统一起使用时,它必须对应于整数天,并且通常是整数年。

ERAS

ERAS("Eras", Duration.ofSeconds(31556952L * 1000_000_000L))
代表一个时代概念的单位。 ISO日历系统没有时代,因此无法将日期添加到日期或日期时间。 该时代的估计持续时间被人为定义为1,000,000,000 Years 。

与其他日历系统一起使用时,对设备没有限制。

FOREVER

FOREVER("Forever", Duration.ofSeconds(Long.MAX_VALUE, 999_999_999))
代表永恒概念的人工单位。 这主要与TemporalField一起用于表示无限字段,例如年份或时代。 
该单位的估计持续时间被人为定义为Duration支持的最大持续时间。

HALF_DAYS

HALF_DAYS("HalfDays", Duration.ofSeconds(43200))
代表AM / PM中使用的半天概念的单位。 对于ISO日历系统,它等于12小时。

HOURS

HOURS("Hours", Duration.ofSeconds(3600))
表示一小时概念的单位。 对于ISO日历系统,它等于60分钟。

MICROS

MICROS("Micros", Duration.ofNanos(1000))
表示微秒概念的单位。 对于ISO日历系统,它等于秒单位的第1,000,000部分。

MILLENNIA

MILLENNIA("Millennia", Duration.ofSeconds(31556952L * 1000L))
代表千年概念的单位。 对于ISO日历系统,它等于1000年。
当与其他日历系统一起使用时,它必须对应于整数天,并且通常是整数年。

MILLIS

 MILLIS("Millis", Duration.ofNanos(1000_000))
表示毫秒概念的单位。 对于ISO日历系统,它等于秒单元的第1000部分。

MINUTES

 MINUTES("Minutes", Duration.ofSeconds(60))
表示一分钟概念的单位。 对于ISO日历系统,它等于60秒。

MONTHS

MONTHS("Months", Duration.ofSeconds(31556952L / 12))
代表一个月概念的单位。 对于ISO日历系统,月份的长度因月份而异。 估计一个月的持续时间是365.2425 Days十二分之一。
当与其他日历系统一起使用时,它必须对应于整数天。

NANOS

NANOS("Nanos", Duration.ofNanos(1))
代表纳秒概念的单位,是支持的最小时间单位。 对于ISO日历系统,它等于秒单元的1,000,000,000个部分。

SECONDS

SECONDS("Seconds", Duration.ofSeconds(1))
表示秒概念的单位。 对于ISO日历系统,它等于SI系统中的秒系统,除了闰秒。

WEEKS

WEEKS("Weeks", Duration.ofSeconds(7 * 86400L))
表示一周概念的单位。 对于ISO日历系统,它等于7天。
当与其他日历系统一起使用时,它必须对应于整数天。

YEARS

YEARS("Years", Duration.ofSeconds(31556952L))
代表一年概念的单位。 对于ISO日历系统,它等于12个月。 估计一年的持续时间为365.2425 Days 。
当与其他日历系统一起使用时,它必须对应于整数天或月,大致等于地球绕太阳通过的年份。
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值