java8 Instant 时间及转换操作
一、获取当前时区时间:
Instant.now().atZone(ZoneId.systemDefault())
二、创建Instant实例
Instantnow=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个小时
Instantnow=Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
System.out.println(“now:”+now);
控制台输出:
now:2018-07-09T16:58:48.188Z
三、Instant获取long类型的10位秒数、13位毫秒数
Instantnow=Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8)); System.out.println(“秒数:”+now.getEpochSecond()); System.out.println(“毫秒数:”+now.toEpochMilli());
控制台输出:
秒数:1539170157
毫秒数:1539170157886
LocalDateTime输出毫秒数的方式,比Instant多一步转换
LocalDateTimelocalDateTime=LocalDateTime.now(); //LocalDateTime转Instant InstantlocalDateTime2Instant=localDateTime.atZone(ZoneId.systemDefault()).toInstant(); System.out.println(“LocalDateTime毫秒数:”+localDateTime2Instant.toEpochMilli());
控制台输出:
LocalDateTime毫秒数:1539141733010
补充知识:jdk8中奖Date转换为String格式的方法
我就废话不多说了,大家还是直接看代码吧~
publicstaticStringgetLocalDateStr(Datedate,Stringformatter){ DateTimeFormatterdateTimeFormatter=DateTimeFormatter.ofPattern(formatter); Instantinstant=date.toInstant(); ZoneIdzoneId=ZoneId.systemDefault(); LocalDateTimelocalDateTime=LocalDateTime.ofInstant(instant,zoneId); StringdateStr=dateTimeFormatter.format(localDateTime); returndateStr; }
以上这篇java8Instant时间及转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。