乐字节-Java8新特性之Date API

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了乐字节-Java8新特性之Date API脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇文章,小乐给大家带来了Java8新特性之Optional,接下来本文将会给大家介绍Java8新特性之Date API

前言:

Java 8通过发布新的Date-time API来进一步加强对日期与时间的处理。 旧版的 Java 中,日期时间 API 存在诸多问题 :

  • 非线程安全 java.util.Date 是非线程安全的,所有的日期类都是可变的,
  • 设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.SQL的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。
  • 时区处理麻烦 − 日期类并不提供国际化,没有时区支持

Java 8 在 java.time 包下提供了很多新的 API。以下为两个比较重要的 API:

  • Local(本地) : 简化了日期时间的处理,没有时区的问题。
  • Zoned(时区) − 通过制定的时区处理日期时间。

新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。

@H_360_25@1、LocalDateTime

乐字节-Java8新特性之Date API

LocalDateTime ldt = LocalDateTime.now(); // 获取系统当前时间 System.out.PRintln(ldt); LocalDateTime ldt2 = LocalDateTime.of(2019, 01, 01, 12, 12, 12, 888000000); // 构建LocalDateTime对象ldt System.out.println(ldt2); // 获取明年此时的时间 LocalDateTime ldt3 = ldt.plusYears(1); System.out.println(ldt3); // 获取去年此刻时间 LocalDateTime ldt4 = ldt.minusYears(1); System.out.println(ldt4); // 获取年 System.out.println(ldt.getYear()); // 获取月份 System.out.println(ldt.getMonthValue()); // 获取本月第某天 System.out.println(ldt.getDayOfMonth()); // 获取时 System.out.println(ldt.getHour()); // 获取分 System.out.println(ldt.getMinute()); // 获取秒 System.out.println(ldt.getSecond()); // 获取纳秒 System.out.println(ldt.getNano()); 

2、时间戳

时间戳:以Unix元年:19701100:00:00 至目前时间之间的毫秒值   public static void testInstant(){     // 时间戳 Instant     Instant ins1 = Instant.now();     // 默认获取UTC时间,协调世界时     System.out.println(ins1);     OffsetDateTime odt = ins1.atOffset(Zoneoffset.ofHours(8));     System.out.println(odt);     System.out.println(ins1.toEpochMilli());     Instant ins2 = Instant.ofEpochSecond(60);     System.out.println(ins2); } 

3、日期时间间隔计算:Duration、PEriod

public static void testDuration(String[] args) {         Instant ins1 = Instant.now();         try {             Thread.sleep(2000);         } catch (InterruptedException e) {             e.printStackTrace();         }         Instant ins2 = Instant.now();         Duration dura = Duration.between(ins1, ins2);         System.out.println(dura.toMillis());         System.out.println("----------------------");         LocalTime lt1 = LocalTime.now();         try {             Thread.sleep(2000);         } catch (InterruptedException e) {             e.printStackTrace();         }         LocalTime lt2 = LocalTime.now();         Duration dura2 = Duration.between(lt1, lt2);         System.out.println(dura2.toMillis());     }      public  static void testPeriod(){         LocalDate ld1 = LocalDate.of(2015, 2, 2);         LocalDate ld2 = LocalDate.now();         Period period = Period.between(ld1, ld2);         System.out.println(period);         System.out.println("相差" + period.getYears() + "年"                 + period.getMonths() + "月"                 + period.getDays() + "天");      } 

4、时间校正:TemporalAdjuster

public  static  void testTemporalAdjuster(){     LocalDateTime ldt = LocalDateTime.now();     System.out.println(ldt);     LocalDateTime ldt2 = ldt.wIThDayOfMonth(10);     System.out.println(ldt2);     LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));     System.out.println(ldt3); } 

5、日期时间格式化

public  static  void testDateForMATE(){         DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE;         LocalDateTime ldt = LocalDateTime.now();         String strDate = ldt.format(dtf);         System.out.println(strDate);         System.out.println("----------------------------");         DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");         String strDate2 = dtf2.format(ldt);         System.out.println(strDate2);         System.out.println("-----------------------------");         LocalDateTime newDate = ldt.parse(strDate2, dtf2);         System.out.println(newDate);     } 

6、TimeZone 时区处理

    // 时区的处理     public  static  void testTimeZone(){         LocalDateTime ldt = LocalDateTime.now(Zoneid.of("Europe/Dublin"));         System.out.println(ldt);         LocalDateTime ldt2 = LocalDateTime.now(ZoneId.of("Europe/Dublin"));         ZonedDateTime zdt = ldt2.atZone(ZoneId.of("Europe/Dublin"));         System.out.println(zdt);     } 

这次就分享到这里了,后面小乐会继续给大家介绍Java8新特性的,请大家继续多多关注哦!乐字节只讲Java技干货。

脚本宝典总结

以上是脚本宝典为你收集整理的乐字节-Java8新特性之Date API全部内容,希望文章能够帮你解决乐字节-Java8新特性之Date API所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。