• 进阶JAVA篇- DateTimeFormatter 类与 Period 类、Duration类的常用API(八)


    目录

                  1.0 DateTimeFormatter 类的说明

                    1.1 如何创建格式化器的对象呢?

                     1.2 DateTimeFormatter 类中的 format(LocalDateTime  ldt) 实例方法

                   2.0 Period 类的说明

                     2.1 Period 类中的 between(localDate1,localDate2) 静态方法来创建对象。

                   3.0 Duration 类的说明

                   4.0 小结


    API                

            1.0 DateTimeFormatter 类的说明

            是 Java 8 新增的一个类,用于格式化和解析日期时间对象。它提供了一系列的预定义格式化模式,也支持自定义格式化模式。使用 DateTimeFormatter 类可以将日期时间对象转换为字符串,也可以将字符串转换为日期时间对象。

            1.1 如何创建格式化器的对象呢?

            可以通过 ofPattern(String pattern) 静态方法来创建格式化器的对象。这里 String pattern 指的是自定的格式,其中 yyyy(年)、MM(月)、dd(日)、HH(时)、mm(分)、ss(秒)、EEE(星期几)、a(上午或者下午)

    代码如下:

    1. import java.time.format.DateTimeFormatter;
    2. public class Text_DateTimeFormatter {
    3. public static void main(String[] args) {
    4. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
    5. }
    6. }

            可以简单的理解这类的作用就是自己定义一个格式,然后给日期时间对象提供格式转变为字符串,或者是将已经格式化好的字符串转变为日期时间的对象。

             1.2 DateTimeFormatter 类中的 format(LocalDateTime  ldt) 实例方法

            通过 format(LocalDateTime  ldt) 实例方法从 LocalDateTime 对象转变为以字符串输出的格式化的日期时间(将日期时间对象格式化为字符串)。

    代码如下:

    1. import java.time.LocalDateTime;
    2. import java.time.format.DateTimeFormatter;
    3. public class Text_DateTimeFormatter {
    4. public static void main(String[] args) {
    5. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
    6. LocalDateTime ldt = LocalDateTime.now();
    7. System.out.println(dtf.format(ldt));
    8. }
    9. }

    运行结果如下:

            补充还可以用 LocalTimeFormatter 类的 formatter() 的实例方法,效果是一样的。

    代码如下:

    1. import java.time.LocalDateTime;
    2. import java.time.format.DateTimeFormatter;
    3. public class Text_DateTimeFormatter {
    4. public static void main(String[] args) {
    5. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
    6. LocalDateTime ldt = LocalDateTime.now();
    7. String b = dtf.format(ldt);
    8. String a = ldt.format(dtf);
    9. System.out.println(a);
    10. System.out.println(b);
    11. }
    12. }

    运行结果如下:

            1.3 LocalDateTime 类中的 parse(CharSequence text, DateTimeFormatter formatter) 实例方法

            可以将字符串解析为日期时间对象。

    代码如下:

    1. import java.time.LocalDateTime;
    2. import java.time.format.DateTimeFormatter;
    3. public class Text_DateTimeFormatter {
    4. public static void main(String[] args) {
    5. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    6. String str = "2028-12-12 09:30:30";
    7. LocalDateTime ldt = LocalDateTime.parse(str,dtf);
    8. System.out.println(ldt);
    9. }
    10. }

    运行结果如下:

            2.0 Period 类的说明

            可以用于计算两个 LocalDate 对象相差的年数、月数、天数。

            2.1 Period 类中的 between(localDate1,localDate2) 静态方法来创建对象。

    代码如下:

    1. import java.time.Period;
    2. public class Text_DateTimeFormatter {
    3. public static void main(String[] args) {
    4. LocalDate localDate1 = LocalDate.of(2026,12,12);
    5. LocalDate localDate2 = LocalDate.of(2028,12,12);
    6. Period period = Period.between(localDate1,localDate2);
    7. //相差的年数
    8. System.out.println(period.getYears());
    9. //相差的月数
    10. System.out.println(period.getMonths());
    11. //相差的天数
    12. System.out.println(period.getDays());
    13. }
    14. }

    运行结果:

            3.0 Duration 类的说明

             可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持 LocalTime、LocalDateTime、Instant等时间。

    代码如下:

    1. import java.time.*;
    2. public class Text_DateTimeFormatter {
    3. public static void main(String[] args) {
    4. LocalDateTime localDateTime1 = LocalDateTime.of(2023,12,12,13,13,22);
    5. LocalDateTime localDateTime2 = LocalDateTime.of(2023,12,12,14,13,22);
    6. Duration duration = Duration.between(localDateTime1,localDateTime2);
    7. System.out.println(duration.toDays());
    8. System.out.println(duration.toHours());
    9. System.out.println(duration.toMinutes());
    10. System.out.println(duration.getSeconds());
    11. System.out.println(duration.toMillis());
    12. }
    13. }

              需要注意的是得到相差数大多数是用 to 开头,少数用 get 开头。      

    运行结果如下:

            

             4.0 小结

            DateTimeFormatter 类用于格式化和解析日期时间对象,可以将日期时间对象转换为字符串,也可以将字符串转换为日期时间对象。它提供了一系列的预定义格式化模式,也支持自定义格式化模式。

            Period 类用于表示日期之间的差距,可以表示年、月、日之间的差距。它可以用于计算和操作日期对象之间的差距,例如计算两个日期之间相差几天、几个月、几年等。

            Duration 类用于表示时间之间的差距,可以表示小时、分钟、秒、毫秒、纳秒之间的差距。它可以用于计算和操作时间对象之间的差距,例如计算两个时间之间相差几小时、几分钟、几秒等。

    这三个类的使用示例:

    1. // DateTimeFormatter 类示例
    2. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    3. String formattedDateTime = LocalDateTime.now().format(formatter);
    4. System.out.println(formattedDateTime);
    5. // Period 类示例
    6. LocalDate date1 = LocalDate.of(2023, 10, 15);
    7. LocalDate date2 = LocalDate.of(2024, 10, 15);
    8. Period period = Period.between(date1, date2);
    9. System.out.println(period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");
    10. // Duration 类示例
    11. LocalTime time1 = LocalTime.of(10, 30, 0);
    12. LocalTime time2 = LocalTime.of(12, 0, 0);
    13. Duration duration = Duration.between(time1, time2);
    14. System.out.println(duration.toHours() + " hours, " + duration.toMinutes() + " minutes, " + duration.getSeconds() + " seconds");



  • 相关阅读:
    【LeetCode】191. 位1的个数
    实时目标检测新高地之#YOLOv7#更快更强的目标检测器
    consumer罢工,几千万条im聊天数据积压在MQ中,解决思路
    短视频矩阵系统源代码开发|技术源代码部署/OEM贴牌搭建
    Spring Security源码(三) 授权分析
    间隔一分钟按某个按键一次——VBS脚本
    QListWidget 类使用教程
    【SpringBoot】多环境配置和启动
    【JavaEE进阶序列 | 从小白到工程师】JavaEE中的三种循环与跳转语句
    GIF动图怎么变成jpg动图?一键分解GIF动画
  • 原文地址:https://blog.csdn.net/Tingfeng__/article/details/133846321