首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何构造一个 Instant

如何构造一个 Instant

原创
作者头像
张紫娃
修改于 2024-12-26 13:59:50
修改于 2024-12-26 13:59:50
3690
举报

啥是Instant?

An instantaneous point on the time-line. 中文描述就是Instant表示高精度时间戳。

为何引入Instant

1. 现代化升级

java.time.Instant 类是在 Java 8 中引入,是对原有日期时间处理API(主要包括 java.util.Date、java.util.Calendar 和 java.sql.Timestamp 等类)的重大改进和现代化升级。

2. 纳秒级精度

3. Instant 所有实例都是不可变的,线程安全。


Java里如何构造Instant

Instant.now → 类比System.currentTimeMillis() →【默认0时区时间格式】→ 【支持查看时间戳位于不同时区的时间格式】

代码语言:java
复制
2024-07-30T14:50:13.0489927+08:00[Asia/Shanghai] 执行如下代码

Instant.now());                                   // 2024-07-30T06:50:13.053659800Z 【时间戳显示成0时区时间格式】
Instant.now().atZone(ZoneOffset.UTC));            // 2024-07-30T06:50:13.053819900Z                  【时间戳显示成指定时区时间格式】
Instant.now().atZone(ZoneId.of("Asia/Tokyo")));   // 2024-07-30T15:50:13.053819900+09:00[Asia/Tokyo] 【时间戳显示成指定时区时间格式】

System.currentTimeMillis());            // 1722322213053
Instant.now().toEpochMilli());          // 1722322213053
Instant.now().getEpochSecond());        // 1722322213
Instant.now().getNano());               // 53819900

ofEpoch → 1562501898000同级转换 → 【默认0时区时间格式】

代码语言:java
复制
Instant.ofEpochMilli(1562501898000L));  //2019-07-07T12:18:18Z             【0时区时间】
Instant.ofEpochMilli(1562501898888L));  //2019-07-07T12:18:18.888Z         【0时区时间】
Instant.ofEpochSecond(1562501898));     //2019-07-07T12:18:18Z             【0时区时间】
Instant.ofEpochSecond(1562501898,888)); //2019-07-07T12:18:18.000000888Z   【0时区时间】

parse → string同级转换 → 【默认0时区时间格式】

代码语言:java
复制
Instant.parse("2019-07-07T20:18:18.000000888Z"));  //2019-07-07T20:18:18.000000888Z 【视String为0时区时间去类型转换】
Instant.parse("2019-07-07T20:18:18Z"));            //2019-07-07T20:18:18Z           【视String为0时区时间去类型转换】

toInstant → 获取不同时区时间的时间戳

代码语言:java
复制
ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9));
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);
Date DATE = new Date(1562501898888L);// Sun Jul 07 20:18:18 CST 2019

ZONED_DATE_TIME.toInstant());                      //2019-07-07T11:18:18.000000888Z 【0时区】
OFFSET_DATE_TIME.toInstant());                     //2019-07-07T11:18:18.000000888Z 【0时区】
LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(8))); //2019-07-07T12:18:18.000000888Z 【0时区】
LOCAL_DATE_TIME.toInstant(ZoneOffset.UTC));        //2019-07-07T20:18:18.000000888Z 【0时区】
DATE.toInstant());                                 //2019-07-07T12:18:18.888Z       【0时区】

特殊Instant

代码语言:java
复制
Instant.MIN);//-1000000000-01-01T00:00:00Z
Instant.MAX);//+1000000000-12-31T23:59:59.999999999Z
Instant.EPOCH);//1970-01-01T00:00:00Z

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
如何构造一个 Timestamp()
java.sql.Timestamp 类是 Java 中用于精确表示日期和时间的数据类型,特别适用于在与数据库交互时处理时间戳信息。
张紫娃
2023/07/20
3100
如何构造一个 Timestamp()
如何构造一个 Date()
An instantaneous point on the time-line. 中文描述就是Instant表示高精度时间戳
张紫娃
2023/07/19
3880
如何构造一个 Date()
如何构造一个 LocalDateTime()
张紫娃
2023/07/20
2620
如何构造一个 LocalDateTime()
如何构造一个 ZonedDateTime()
张紫娃
2023/07/20
3280
如何构造一个 ZonedDateTime()
如何构造一个 OffsetDateTime()
张紫娃
2023/07/20
2900
如何构造一个 OffsetDateTime()
获取日期的String格式
张紫娃
2023/07/22
1.1K0
获取日期的String格式
日期计算
张紫娃
2023/07/22
3940
日期计算
Java 编程问题:三、使用日期和时间
本章包括 20 个涉及日期和时间的问题。这些问题通过Date、Calendar、LocalDate、LocalTime、LocalDateTime、ZoneDateTime、OffsetDateTime、OffsetTime、Instant等涵盖了广泛的主题(转换、格式化、加减、定义时段/持续时间、计算等)。到本章结束时,您将在确定日期和时间方面没有问题,同时符合您的应用的需要。本章介绍的基本问题将非常有助于了解日期-时间 API 的整体情况,并将像拼图中需要拼凑起来的部分一样解决涉及日期和时间的复杂挑战。
ApacheCN_飞龙
2022/07/11
6K0
Instant与Duration:什么是时间戳和时间间隔?如何在开发中使用?
本文将详细讲解Instant(时间戳)和Duration(时间间隔)的核心概念,配合代码示例演示如何在开发中灵活应用。
猫头虎
2024/12/24
3880
Java中的时间和日期(三):java8中新的时间API介绍
由于java7及以前的版本对时间的处理都存在诸多的问题。自java8之后,引入了新的时间API,现在对这些新的API及其使用进行介绍。
冬天里的懒猫
2020/08/11
2.3K0
11.4 Java 日期和时间类
我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻、纪元时、年历等。
acc8226
2022/05/17
4.5K0
11.4 Java 日期和时间类
【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
Tiago Fernandez做了一个很有意思的投票,统计对Java API的不满意程度,最终Java Date/Time/Calendar API被评为最烂API第二名(第一为XML/DOM)。
YourBatman
2019/09/03
5.4K0
【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
基础篇:JDK8的日期处理API-必知必备
jdk8之前我们一直在用Date、Calender和SimpleDateFormat,但它的API不够强大,还存在线程安全问题,一直被人诟病。jdk8提供了新的时间API,在java.time包里的类是不可变且线程安全的,它和Joda是同一个作者实现的,因此借鉴了Joda很多特点,如果你用习惯Joda,可以很方便地切换到java.time类的使用
潜行前行
2021/01/21
2.7K0
你还在用SimpleDateFormat格式化时间嘛?
当多个线程使用同一个时间处理对象进行对日期的格式化的时候,会出现java.lang.NumberFormatException: multiple points。主要原因是由于SimpleDateFormat是线程不安全的,当线程共享的时候,会引发这个异常。
石的三次方
2021/01/05
9370
Java8 Date Time API
Java8 带来了全新的处理日期和时间的方式。几乎所有人都有使用Java Date API痛苦的经历。因此有很多人切换到了Joda Time,但是Java8现在有了媲美Joda的时间API。在学习API前,先了解一下日期和时间的概念。Java日期遵循公历规则。表示时间和日期的类放在java.time包中。在这个包里比较重要的API有:
代码拾遗
2018/07/24
1.2K0
Java中的时间和日期(四):与java8时间API有关的一些总结和补充
在了解完java8中新版本的时间API之后,当然,并不是全部了解,java.time包下面接近上百个类,没办法一一去了解。作为我们日常用来替换java.util.date的功能。也不需要全部了解。在看过若干代码之后,有如下总结。
冬天里的懒猫
2020/08/11
8770
Java中的时间和日期(四):与java8时间API有关的一些总结和补充
Java/Kotlin 中的日期与时间
1 Date 2 LocalDateTime,LocalDate,LocalTime 3 ZonedDateTime 4 Instant 5 java.sql Date Time TimeStamp
jgrass
2024/12/25
5630
JSR310新日期API(二)-日期时间API
其他的类库还有Year、Month、DayOfWeek、MonthDay、YearMonth等。值得注意的是:JSR-310增加的日期API是严格区分年月日-时分秒格式的日期表示类,例如XXXDateTime一定表示为年月日时分秒(纳秒),XXXTime只能表示时分秒(纳秒),XXXDate只能表示年月日。
Throwable
2020/06/23
2.5K0
【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/10/29
6660
【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!
什么是时区?
1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。每个时区横跨经度15度,时间正好是1小时。
JMCui
2023/03/02
2.3K0
什么是时区?
相关推荐
如何构造一个 Timestamp()
更多 >
目录
  • 啥是Instant?
  • 为何引入Instant?
    • 1. 现代化升级
    • 2. 纳秒级精度
    • 3. Instant 所有实例都是不可变的,线程安全。
  • Java里如何构造Instant?
    • Instant.now → 类比System.currentTimeMillis() →【默认0时区时间格式】→ 【支持查看时间戳位于不同时区的时间格式】
    • ofEpoch → 1562501898000同级转换 → 【默认0时区时间格式】
    • parse → string同级转换 → 【默认0时区时间格式】
    • toInstant → 获取不同时区时间的时间戳
    • 特殊Instant
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档