java8 Instant 时间及转换操作

网友投稿 811 2022-11-21


java8 Instant 时间及转换操作

一、获取当前时区时间:

Instanthttp://.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位毫秒数

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

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

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

控制台输出:

秒数: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

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

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

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;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JDK15正式发布(新增功能预览)
下一篇:为spring get请求添加自定义的参数处理操作(如下划线转驼峰)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~