java8 Instant 时间及转换操作

2025-05-29 0 81

一、获取当前时区时间

Instant.now().atZone(ZoneId.systemDefault())

二、创建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位毫秒数

?

1

2

3
Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));

System.out.println(“秒数:”+now.getEpochSecond());

System.out.println(“毫秒数:”+now.toEpochMilli());

控制台输出:

秒数:1539170157

毫秒数:1539170157886

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

?

1

2

3

4
LocalDateTime localDateTime = LocalDateTime.now();

//LocalDateTime转Instant

Instant localDateTime2Instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();

System.out.println(“LocalDateTime 毫秒数:”+localDateTime2Instant.toEpochMilli());

控制台输出:

LocalDateTime 毫秒数:1539141733010

补充知识:jdk8中奖Date转换为String格式的方法

我就废话不多说了,大家还是直接看代码吧~

?

1

2

3

4

5

6

7

8

9
public static String getLocalDateStr(Date date,String formatter) {

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(formatter);

Instant instant = date.toInstant();

ZoneId zoneId = ZoneId.systemDefault();

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);

String dateStr = dateTimeFormatter.format(localDateTime);

return dateStr;

}

以上这篇java8 Instant 时间转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

原文链接:https://blog.csdn.net/weixin_41987908/article/details/89204729

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java8 Instant 时间及转换操作 https://www.kuaiidc.com/116846.html

相关文章

发表评论
暂无评论