进阶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(上午或者下午)

代码如下:

import java.time.format.DateTimeFormatter;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
    }
}

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

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

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

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(dtf.format(ldt));
    }
}

运行结果如下:

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

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");

        LocalDateTime ldt = LocalDateTime.now();
        String b = dtf.format(ldt);
        String a = ldt.format(dtf);

        System.out.println(a);
        System.out.println(b);

    }
}

运行结果如下:

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

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

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String str = "2028-12-12 09:30:30";

        LocalDateTime ldt = LocalDateTime.parse(str,dtf);
        System.out.println(ldt);
    }
}

运行结果如下:

        2.0 Period 类的说明

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

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

代码如下:

import java.time.Period;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {
        LocalDate localDate1 = LocalDate.of(2026,12,12);
        LocalDate localDate2 = LocalDate.of(2028,12,12);

        Period period = Period.between(localDate1,localDate2);
        //相差的年数
        System.out.println(period.getYears());
        //相差的月数
        System.out.println(period.getMonths());
        //相差的天数
        System.out.println(period.getDays());
        
    }
}

运行结果:

        3.0 Duration 类的说明

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

代码如下:

import java.time.*;

public class Text_DateTimeFormatter {
    public static void main(String[] args) {
        LocalDateTime localDateTime1 = LocalDateTime.of(2023,12,12,13,13,22);
        LocalDateTime localDateTime2 = LocalDateTime.of(2023,12,12,14,13,22);

        Duration duration = Duration.between(localDateTime1,localDateTime2);
        System.out.println(duration.toDays());
        System.out.println(duration.toHours());
        System.out.println(duration.toMinutes());
        System.out.println(duration.getSeconds());
        System.out.println(duration.toMillis());
    }
    
}

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

运行结果如下:

        

         4.0 小结

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

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

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

这三个类的使用示例:

// DateTimeFormatter 类示例
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = LocalDateTime.now().format(formatter);
System.out.println(formattedDateTime);

// Period 类示例
LocalDate date1 = LocalDate.of(2023, 10, 15);
LocalDate date2 = LocalDate.of(2024, 10, 15);
Period period = Period.between(date1, date2);
System.out.println(period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");

// Duration 类示例
LocalTime time1 = LocalTime.of(10, 30, 0);
LocalTime time2 = LocalTime.of(12, 0, 0);
Duration duration = Duration.between(time1, time2);
System.out.println(duration.toHours() + " hours, " + duration.toMinutes() + " minutes, " + duration.getSeconds() + " seconds");



猜你喜欢

转载自blog.csdn.net/Tingfeng__/article/details/133846321
今日推荐