JDK8新特性 --instant

news/2024/12/15 18:41:31/

Instant

    • 前言
    • demo

前言

java.time.Instant 类是 Java 8 新增的日期时间 API 的一部分,用于表示时间线上的一个瞬时点。它是不可变的、线程安全的,并且设计用来代替 java.util.Date。

Instant 可以被用来记录事件发生的时间戳,以及进行时间戳的计算和转换操作。

Instant 类主要存储两部分数据:

  • 自1970年1月1日0时0分0秒(UTC)开始的秒数。
  • 纳秒部分(秒内的纳秒数),以提供更精确的时间。

java.time.Instant 类的一些常用方法:
在这里插入图片描述

demo

now() - 获取当前的时间戳。

ofEpochMilli(long epochMilli) - 使用从1970-01-01T00:00:00Z的UTC开始的毫秒数创建一个 Instant 实例。

ofEpochSecond(long epochSecond) - 使用从1970-01-01T00:00:00Z的UTC开始的秒数创建一个 Instant 实例,可以另外加上纳秒的调整值。

plusSeconds(long secondsToAdd) - 添加指定的秒数到这个 Instant。

plusMillis(long millisToAdd) - 添加指定的毫秒数到这个 Instant。

plusNanos(long nanosToAdd) - 添加指定的纳秒数到这个 Instant。

minusSeconds(long secondsToSubtract) - 从这个 Instant 减去指定的秒数。

minusMillis(long millisToSubtract) - 从这个 Instant 减去指定的毫秒数。

minusNanos(long nanosToSubtract) - 从这个 Instant 减去指定的纳秒数。

getEpochSecond() - 获取这个 Instant 的秒数部分。

toEpochMilli() - 将这个 Instant 转换为毫秒数。

atZone(ZoneId zone) - 将这个 Instant 转换为在指定时区的 ZonedDateTime。

isAfter(Instant otherInstant) - 检查这个 Instant 是否在参数表示的时间点之后。

isBefore(Instant otherInstant) - 检查这个 Instant 是否在参数表示的时间点之前。

compareTo(Instant otherInstant) - 比较两个 Instant 的时间顺序。

equals(Object otherInstant) - 检查这个 Instant 是否与另一个对象相等。

import java.time.Instant;public class InstantExample {public static void main(String[] args) {Instant now = Instant.now(); // 获取当前瞬时点System.out.println("Current Timestamp: " + now);// 增加5小时Instant fiveHoursLater = now.plusSeconds(5 * 3600);System.out.println("Five hours later: " + fiveHoursLater);// 检查先后顺序boolean isAfter = fiveHoursLater.isAfter(now);System.out.println("Is five hours later after now? " + isAfter);// 转换为毫秒long milliseconds = now.toEpochMilli();System.out.println("Milliseconds since epoch: " + milliseconds);}// 解析文本字符串为InstantInstant specificTime = Instant.parse("2023-03-23T10:15:30.00Z");System.out.println("Specific time: " + specificTime);// 截断到小时(忽略更小的时间单位)Instant truncatedToHours = instant.truncatedTo(ChronoUnit.HOURS);System.out.println("Truncated to hours: " + truncatedToHours);// 计算两个Instant之间的分钟数long minutesUntil = instant.until(specificTime, ChronoUnit.MINUTES);System.out.println("Minutes until specific time: " + minutesUntil);// 获取纳秒部分int nanoPart = instant.getNano();System.out.println("Nano part of the current instant: " + nanoPart);ZonedDateTime zdt = now.atZone(ZoneId.systemDefault());// 获取本月的第一天ZonedDateTime firstDayOfMonth = zdt.with(TemporalAdjusters.firstDayOfMonth());System.out.println("First day of the month: " + firstDayOfMonth);// 获取本月的最后一天ZonedDateTime lastDayOfMonth = zdt.with(TemporalAdjusters.lastDayOfMonth());System.out.println("Last day of the month: " + lastDayOfMonth);// 获取下一个星期一ZonedDateTime nextMonday = zdt.with(TemporalAdjusters.next(ChronoUnit.MONDAYS));System.out.println("Next Monday: " + nextMonday);}
}

http://www.ppmy.cn/news/1555373.html

相关文章

PWM调节DCDC参数计算原理

1、动态电压频率调整DVFS SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。 比如某SOC在…

【Innodb阅读笔记】之 本地搭建多个MYSQL

一、背景 在开展工作与学习任务的进程中,时常会涉及到运用多个 MySQL 实例执行特定操作的需求。例如,在深入研习主从复制机制时,借助多个 MySQL 实例能够更为直观地观察数据的传输与同步过程,有效加深对其原理及应用场景的理…

MFC学习笔记专栏开篇语

MFC,是一个英文简写,全称为 Microsoft Foundation Class Library,中文翻译为微软基础类库。它是微软开发的一套C类库,是面向对象的函数库。 微软开发它,是为了给程序员提供方便,减少程序员的工作量。如果没…

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 文档介绍了Edify 3D,一种为高质量的3D资产生成而设计的高级解决方案。首先在多个视点上合成了所描述对象的RGB和表面法线图像正在使用扩散模型。然后使用多视图…

Java对集合的操作方法

1. 数组转集合 //数组转集合 String[] split quickRechargeAmount.split(","); List<String> stringList Stream.of(split).collect(Collectors.toList()); 2. 对List集合数据内容进行分组 //对List集合数据内容进行分组 Map<String, List<LiveAppGi…

《软件无线电简介》

《软件无线电简介》 一、软件无线电的定义 软件无线电&#xff08;Software - Defined Radio&#xff0c;SDR&#xff09;是一种无线电通信技术&#xff0c;它的基本思想是将尽可能多的无线电功能通过软件来实现&#xff0c;而不是传统的通过专用硬件电路来完成。例如&#x…

鼠标断断续续的一直转圈咋办

这两天碰到一个事情&#xff0c;鼠标持续的转圈&#xff0c; 敲代码打字啥的&#xff0c;一会儿又失去下焦点&#xff0c;如此反复&#xff0c;搞得心态爆炸。 实在进行不下去了&#xff0c;网上百度了一堆&#xff0c;有说设置鼠标的&#xff0c;有说清理开机启动的&#xff0…

elasticsearch设置默认账号密码

1.进入elasticsearch的bin目录下&#xff0c;输入命令&#xff1a; elasticsearch-setup-passwords interactive 2.输入对应的账号密码&#xff0c;然后重启elasticsearch&#xff0c;用对应的账号密码登录访问即可