Java8的常用时间api实用指南
前言
Java8提供了一套新的时间api,比之前的Calendar类要简单明了很多。常用的有三个类Instant、LocalDate、LocalDateTime,Instant是用来表示时刻的,类似Unix的时间,表示从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,也可以获取毫秒。LocalDate表示一个日期,只有年月日,没有时分秒。LocalDateTime就是年月日时分秒了。
下面话不多说了,来一起看看详细的介绍吧
Instant
publicstaticvoidmain(String[]args){ Instantnow=Instant.now(); System.out.println("Nowsecoonds:"+now.getEpochSecond()); System.out.println("Nowmilli:"+now.toEpochMilli()); }
输出当前时刻距离1970年1月1日0时0分0秒的秒和毫秒
Nowsecoonds:1541321299
Nowmilli:1541321299037
LocalDateTime
为了方便输出时间格式,Java8提供了DateTimeFormatter类来替代之前的SimpleDateFormat。
publicstaticvoidmain(String[]args){ DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"); LocalDateTimenow=LocalDateTime.now(); System.out.println("Now:"+now.format(formatter)); }
Now:2018-11-0416:53:09
LocalDateTime提供了很多时间计算的方法,比如加一个小时,减去一周,加上一天等等这样的计算,比之前的Calendar要方便许多。
publicstaticvoidmain(String[]args){ DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"); LocalDateTimenow=LocalDateTime.now(); System.out.println("Now:"+now.format(formatter)); LocalDateTimenowPlusDay=now.plusDays(1); System.out.println("Now+1day:"+nowPlusDay.format(formatter)); LocalDateTimenowMinusHours=now.minusHours(5); System.out.println("Now-5hours:"+nowMinusHours.format(formatter)); }
Now:2018-11-0417:02:53
Now+1day:2018-11-0517:02:53
Now-5hours:2018-11-0412:02:53
LocalDateTime还有isAfter、isBefore和isEqual方法可以用来比较两个时间。LocalDate的用法和LocalDateTime是类似的。
Instant和LocalDateTime的互相转换
这俩的互相转换都要涉及到一个时区的问题。LocalDateTime用的是系统默认时区。我们可以先把LocalDateTime转为ZonedDateTime,然后再转成Instant。
publicstaticvoidmain(String[]args){ DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"); LocalDateTimenow=LocalDateTime.now(); System.out.println("Now:"+now.format(formatter)); InstantnowInstant=now.atZone(ZoneId.systemDefault()).toInstant(); System.out.println("Nowminiseconds:"+nowInstant.toEpochMilli()); }
Now:2018-11-0417:19:16
Nowminiseconds:1541323156101
publicstaticvoidmain(String[]args){ DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"); Instantnow=Instant.now(); System.out.println("Nowminiseconds:"+now.toEpochMilli()); LocalDateTimenowDateTime=LocalDateTime.ofInstant(now,ZoneId.systemDefault()); System.out.println("Zoneid:"+ZoneId.systemDefault().toString()); System.out.println("Now:"+nowDateTime.format(formatter)); }
Nowminiseconds:1541323844781
Zoneid:Asia/Shanghai
Now:2018-11-0417:30:44
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。