java8 Instant 时间及转换操作

时间:2022-08-23 13:44:11

一、获取当前时区时间:

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 时间及转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

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