Instant 和 Duration 类(进行时间处理)

Instant 

        Instant 类是 Java 8 中引入的,用于表示一个具体的时间点,它基于 UTC(协调世界时)时区。以下是 Instant 类的一些常用方法及其简要说明:

  1. now():获取当前的 Instant 对象,表示当前时间。
  2. ofEpochSecond(long epochSecond):根据自 Unix 纪元(1970-01-01T00:00:00Z)以来的秒数创建 Instant 对象。
  3. ofEpochMilli(long epochMilli):根据自 Unix 纪元以来的毫秒数创建 Instant 对象。
  4. getEpochSecond():获取 Instant 对象表示的时间自 Unix 纪元以来的秒数。
  5. toEpochMilli():获取 Instant 对象表示的时间自 Unix 纪元以来的毫秒数,等同于 System.currentTimeMillis()
  6. getNano():获取 Instant 对象中的纳秒数,表示自上一秒以来的纳秒数。
  7. plus(Duration duration):在当前 Instant 对象上加上指定的持续时间,返回一个新的 Instant 对象。
  8. minus(Duration duration):在当前 Instant 对象上减去指定的持续时间,返回一个新的 Instant 对象。
  9. atZone(ZoneId zone):将 Instant 与时区结合以创建 ZonedDateTime 对象。
  10. truncatedTo(TemporalUnit unit):返回截断为指定单位的 Instant 对象的副本。

以下是一些代码案例:

// 获取当前时间的 Instant 对象
Instant now = Instant.now();
System.out.println("当前时间: " + now);

// 根据秒数创建 Instant 对象
Instant instantFromSeconds = Instant.ofEpochSecond(1643723400L);
System.out.println("根据秒数创建的时间: " + instantFromSeconds);

// 根据毫秒数创建 Instant 对象
Instant instantFromMillis = Instant.ofEpochMilli(1643723400000L);
System.out.println("根据毫秒数创建的时间: " + instantFromMillis);

// 获取自 Unix 纪元以来的秒数和毫秒数
long seconds = now.getEpochSecond();
long millis = now.toEpochMilli();
System.out.println("自 Unix 纪元以来的秒数: " + seconds);
System.out.println("自 Unix 纪元以来的毫秒数: " + millis);

// 获取纳秒数
int nanos = now.getNano();
System.out.println("纳秒数: " + nanos);

// 在当前时间上加上一个小时
Instant oneHourLater = now.plus(Duration.ofHours(1));
System.out.println("一小时后的时间: " + oneHourLater);

// 从当前时间减去 30 分钟
Instant thirtyMinutesEarlier = now.minus(Duration.ofMinutes(30));
System.out.println("三十分钟前的时间: " + thirtyMinutesEarlier);

Duration

        Duration 类是 Java 8 中引入的,用于表示两个时间点之间的时间量(例如,持续时间)。以下是 Duration 类的一些常用方法及其简要说明:

  1. ofDays(long days):创建表示指定天数的 Duration 对象。
  2. ofHours(long hours):创建表示指定小时数的 Duration 对象。
  3. ofMinutes(long minutes):创建表示指定分钟数的 Duration 对象。
  4. ofSeconds(long seconds):创建表示指定秒数的 Duration 对象。
  5. ofMillis(long millis):创建表示指定毫秒数的 Duration 对象。
  6. ofNanos(long nanos):创建表示指定纳秒数的 Duration 对象。
  7. of(long amount, TemporalUnit unit):根据指定的时间量和时间单位创建 Duration 对象。
  8. plus(long amountToAdd, TemporalUnit unit):在当前 Duration 对象上加上指定的时间量,返回一个新的 Duration 对象。
  9. minus(long amountToSubtract, TemporalUnit unit):从当前 Duration 对象减去指定的时间量,返回一个新的 Duration 对象。
  10. plus(Duration duration):在当前 Duration 对象上加上另一个 Duration 对象,返回一个新的 Duration 对象。
  11. minus(Duration duration):从当前 Duration 对象减去另一个 Duration 对象,返回一个新的 Duration 对象。
  12. toDays():将 Duration 对象转换为天数。
  13. toHours():将 Duration 对象转换为小时数。
  14. toMinutes():将 Duration 对象转换为分钟数。
  15. toSeconds():将 Duration 对象转换为秒数。
  16. toMillis():将 Duration 对象转换为毫秒数。
  17. toNanos():将 Duration 对象转换为纳秒数。
  18. getSeconds():获取 Duration 对象中的秒数部分。
  19. getNano():获取 Duration 对象中的纳秒部分。
// 创建表示特定时间量的 Duration 对象
Duration duration = Duration.ofDays(2).plusHours(3).plusMinutes(45).plusSeconds(10);
System.out.println("持续时间: " + duration);

// 创建表示特定时间量的 Duration 对象(其他方法)
Duration durationHours = Duration.ofHours(5);
Duration durationMinutes = Duration.ofMinutes(30);
Duration durationSeconds = Duration.ofSeconds(15);
Duration durationMillis = Duration.ofMillis(500);
Duration durationNanos = Duration.ofNanos(123456789);

// 在 Duration 对象上加上或减去时间量
Duration durationPlus = duration.plusHours(2);
Duration durationMinus = duration.minusMinutes(10);

// 将 Duration 对象与其他 Duration 对象相加或相减
Duration durationPlusOther = duration.plus(Duration.ofHours(1));
Duration durationMinusOther = duration.minus(Duration.ofMinutes(5));

// 转换为不同的时间单位
long days = duration.toDays();
long hours = duration.toHours();
long minutes = duration.toMinutes();
long seconds = duration.getSeconds();
int nanos = duration.getNano();

// 打印结果
System.out.println("天数: " + days);
System.out.println("小时数: " + hours);
System.out.println("分钟数: " + minutes);
System.out.println("秒数: " + seconds);
System.out.println("纳秒数: " + nanos);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林想被监督学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值