目录
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 小结
是 Java 8 新增的一个类,用于格式化和解析日期时间对象。它提供了一系列的预定义格式化模式,也支持自定义格式化模式。使用 DateTimeFormatter 类可以将日期时间对象转换为字符串,也可以将字符串转换为日期时间对象。
可以通过 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"); } }
可以简单的理解这类的作用就是自己定义一个格式,然后给日期时间对象提供格式转变为字符串,或者是将已经格式化好的字符串转变为日期时间的对象。
通过 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); } }
运行结果如下:
可以用于计算两个 LocalDate 对象相差的年数、月数、天数。
代码如下:
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()); } }
运行结果:
可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持 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 开头。
运行结果如下:
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");