Java8有哪些新特性或优化?

2026-05-26 02:002阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计611个文字,预计阅读时间需要3分钟。

Java8有哪些新特性或优化?

目录+说明+一、创建Instant实例+二、获取Instant的10位秒数和13位毫秒数+说明+Instant类+是Java8中补充的一个时间戳类。相对于System.currentTimeMillis()获取到的时间戳,Instant可以更精确地表示到【毫秒】。+Instant可以更改为Instant时间戳类。

目录
  • 说明
  • 一、创建Instant实例
  • 二、Instant获取long类型的10位秒数、13位毫秒数

说明

Instant 类 是Java8 中补充的一个 时间戳类。
相较于 System.currentTimeMillis()获取到,Instant 可以更为精确的获取到。

Instant 可以使用静态方法 now() 或者 of() 方法来创建一个实例对象。(案例代码中会有体现)

Instant 类的常用API 就是获取时间戳了
* Instant 类的 getEpochSecond() : 获取的是秒
* Instant 类的 toEpochMilli() : 获取的是毫秒,同 System.currentTimeMillis()
* Instant 类的 getNano() : 获取的是纳秒,更精确了

同时,Instant 类还是 Java8 中 提供的新的 日期时间类LocalDateTime 与 原来的 java.util.Date 类之间转换的桥梁。

在java.util.Date类与LocalDate、LocalDateTime类之间转换中 均可以通过Instant作为中间类完成转换,Instant的使用还是比较方便的,下面介绍Instant的使用。

一、创建Instant实例

Instant now = Instant.now(); System.out.println("now:"+now);

控制台输出:

now:2018-07-09T08:59:08.853Z

注意:通过这种方式获取的时间戳与北京时间相差8个时区,需要修正为北京时间,通过查看源代码发现Instant.now()使用等是UTC时间Clock.systemUTC().instant()。LocalDate、LocalDateTime 的now()方法使用的是系统默认时区 不存在Instant.now()的时间问题。
###解决方法
增加8个小时

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println("now:"+now);

控制台输出:

now:2018-07-09T16:58:48.188Z

二、Instant获取long类型的10位秒数、13位毫秒数

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println("秒数:"+now.getEpochSecond()); System.out.println("毫秒数:"+now.toEpochMilli());

控制台输出:

Java8有哪些新特性或优化?

秒数:1539170157
毫秒数:1539170157886

LocalDateTime输出毫秒数的方式,比Instant多一步转换

LocalDateTime localDateTime = LocalDateTime.now(); //LocalDateTime转Instant Instant localDateTime2Instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); System.out.println("LocalDateTime 毫秒数:"+localDateTime2Instant.toEpochMilli());

控制台输出:

LocalDateTime 毫秒数:1539141733010

到此这篇关于Java8 Instant 时间戳的文章就介绍到这了,更多相关Java8 Instant 时间戳内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计611个文字,预计阅读时间需要3分钟。

Java8有哪些新特性或优化?

目录+说明+一、创建Instant实例+二、获取Instant的10位秒数和13位毫秒数+说明+Instant类+是Java8中补充的一个时间戳类。相对于System.currentTimeMillis()获取到的时间戳,Instant可以更精确地表示到【毫秒】。+Instant可以更改为Instant时间戳类。

目录
  • 说明
  • 一、创建Instant实例
  • 二、Instant获取long类型的10位秒数、13位毫秒数

说明

Instant 类 是Java8 中补充的一个 时间戳类。
相较于 System.currentTimeMillis()获取到,Instant 可以更为精确的获取到。

Instant 可以使用静态方法 now() 或者 of() 方法来创建一个实例对象。(案例代码中会有体现)

Instant 类的常用API 就是获取时间戳了
* Instant 类的 getEpochSecond() : 获取的是秒
* Instant 类的 toEpochMilli() : 获取的是毫秒,同 System.currentTimeMillis()
* Instant 类的 getNano() : 获取的是纳秒,更精确了

同时,Instant 类还是 Java8 中 提供的新的 日期时间类LocalDateTime 与 原来的 java.util.Date 类之间转换的桥梁。

在java.util.Date类与LocalDate、LocalDateTime类之间转换中 均可以通过Instant作为中间类完成转换,Instant的使用还是比较方便的,下面介绍Instant的使用。

一、创建Instant实例

Instant now = Instant.now(); System.out.println("now:"+now);

控制台输出:

now:2018-07-09T08:59:08.853Z

注意:通过这种方式获取的时间戳与北京时间相差8个时区,需要修正为北京时间,通过查看源代码发现Instant.now()使用等是UTC时间Clock.systemUTC().instant()。LocalDate、LocalDateTime 的now()方法使用的是系统默认时区 不存在Instant.now()的时间问题。
###解决方法
增加8个小时

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println("now:"+now);

控制台输出:

now:2018-07-09T16:58:48.188Z

二、Instant获取long类型的10位秒数、13位毫秒数

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println("秒数:"+now.getEpochSecond()); System.out.println("毫秒数:"+now.toEpochMilli());

控制台输出:

Java8有哪些新特性或优化?

秒数:1539170157
毫秒数:1539170157886

LocalDateTime输出毫秒数的方式,比Instant多一步转换

LocalDateTime localDateTime = LocalDateTime.now(); //LocalDateTime转Instant Instant localDateTime2Instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); System.out.println("LocalDateTime 毫秒数:"+localDateTime2Instant.toEpochMilli());

控制台输出:

LocalDateTime 毫秒数:1539141733010

到此这篇关于Java8 Instant 时间戳的文章就介绍到这了,更多相关Java8 Instant 时间戳内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!