美文网首页
Java 8 新特性:日期时间包

Java 8 新特性:日期时间包

作者: 程序员大耳 | 来源:发表于2019-11-14 19:38 被阅读0次

    Java 8 新特性:日期时间包

    一、是什么?

    java8引入了一套全新的时间日期API。

    新的时间及日期API位于java.time中,java.time包中的是类是不可变且线程安全的。

    二、怎么用?

    一些关键类

    ●Instant——它代表的是时间戳

    ●LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。

    ●LocalTime——它代表的是不含日期的时间

    ●LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。

    ●ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。

    三、Java 8 新时间日期API是如何处理时间及日期的?

    1、如何在java8中获取当天的日期

    LocalDate today1 = LocalDate.now();

    2、如何在java8中获取当前的年月日

    LocalDate today1 = LocalDate.now();

    today1.getYear(); today1.getMonthValue(); today1.getDayOfMonth();

    3、在java8中如何获取某个特定的日期

    LocalDate dateOfBirth = LocalDate.of(1992,06, 06);

    4、在java8中如何检查重复事件,比如生日

    如何在java中判断是否是某个节日或者重复事件,使用MonthDay类。这个类由月日组合,不包含年信

    息,可以用来代表每年重复出现的一些日期或其他组合。

    5、如何在java8中获取当前时间

    LocalTime time = LocalTime.now();

    这里用的是LocalTime类,默认的格式是hh:mm:ss:nnn

    6、如何增加时间里面的小时数

    java8提供了更方便的方法 如plusHours,这些方法返回的是一个新的LocalTime实例的引用,因为

    LocalTime是不可变的

    7、如何获取1周后的日期

    LocalDate是用来表示无时间的日期,他又一个plus()方法可以用来增加日,星期,月,ChronoUnit则

    用来表示时间单位,LocalDate也是不可变的,因此任何修改操作都会返回一个新的实例。

    8、一年前后的日期

    使用了LocalDate的plus()方法来给日期增加日周月,现在我们用minus()方法来找出一年前的那天。

    9、在java8中使用时钟

    java8自带了Clock类,可以用来获取某个时区下(所以对时区是敏感的)当前的瞬时时间、日期。

    用来代替System.currentTimelnMillis()与TimeZone.getDefault()方法。

    11、在java中如何判断某个日期在另一个日期的前面还是后面

    在java8中,LocalDate类中使用isBefore()、isAfter()、equals()方法来比较两个日期。

    如果调用方法的那个日期比给定的日期要早的话,isBefore()方法会返回true。

    12、在java8中处理不同的时区

    java8中不仅将日期和时间进行了分离,同时还有时区。比如ZonId代表的是某个特定时区,ZonedDateTime代表带时区的时间,

    等同于以前的GregorianCalendar类。使用该类,可以将本地时间转换成另一个时区中的对应时间。

    13、如何在java8中检查闰年

    LocalDate类由一个isLeapYear()方法来返回当前LocalDate对应的那年是否是闰年

    14、两个日期之间包含多少天,多少月

    计算两个日期之间包含多少天、周、月、年。可以用java.time.Period类完成该功能。

    15、带时区的日期与时间

    在java8中,可以使用ZoneOffset来代表某个时区,可以使用它的静态方法ZoneOffset.of()方法来获取对应的时区,

    只要获得了这个偏移量,就可以用这个偏移量和LocalDateTime创建一个新的OffsetDateTime

    16、在java8中获取当前时间戳

    java8获取时间戳特别简单。Instant类由一个静态的工厂方法now()可以返回当前时间戳。输出2018-03-13T06:36:11.425Z

    long currentTimeMillis = Clock.systemUTC().millis(); System.out.println(currentTimeMillis);//输出1520922971426,相当于System.currentTimeMillis()方法。

    17、如何在java8中使用预定义的格式器来对日期进行解析/格式化

    在java8之前,时间日期的格式化非常麻烦,经常使用SimpleDateFormat来进行格式化,但是SimpleDateFormat并不是线程安全的。

    在java8中,引入了一个全新的线程安全的日期与时间格式器DateTimeFormatter。并且预定义好了格式。

    18、如何在java中使用自定义的格式器来解析日期

    你可以给DateTimeFormatter的ofPattern静态方法()传入任何的模式,它会返回一个实例。

    19、如何在java8中对日期进行格式化,转换成字符串

    需要制定模式串去创建一个DateTimeFormatter类的实例,但调用的是new LocalDate.format()。

    相关文章

      网友评论

          本文标题:Java 8 新特性:日期时间包

          本文链接:https://www.haomeiwen.com/subject/upkdictx.html