在Java开发中,我们经常需要对日期和时间进行格式化,以满足不同的需求。Java提供了多种日期和时间的格式化方式,其中DateTimeFormatter
类是Java 8引入的新特性之一。DateTimeFormatter
类提供了一系列方法,用于将日期和时间对象以指定的格式输出为字符串,并且还支持将字符串解析为日期和时间对象。
格式化日期和时间
使用DateTimeFormatter
类可以很方便地格式化日期和时间对象。下面是一些常用的格式化示例:
yyyy-MM-dd
:格式化日期为年-月-日的形式,例如:2021-05-01。HH:mm:ss
:格式化时间为小时:分钟:秒的形式,例如:13:45:30。yyyy-MM-dd HH:mm:ss
:格式化日期和时间为年-月-日 小时:分钟:秒的形式,例如:2021-05-01 13:45:30。
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("HH:mm:ss");
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatDate = now.format(formatter1);
String formatTime = now.format(formatter2);
String formatDateTime = now.format(formatter3);
System.out.println("Formatted Date: " + formatDate);
System.out.println("Formatted Time: " + formatTime);
System.out.println("Formatted Date and Time: " + formatDateTime);
输出结果:
Formatted Date: 2021-05-01
Formatted Time: 13:45:30
Formatted Date and Time: 2021-05-01 13:45:30
解析日期和时间
除了格式化日期和时间对象,DateTimeFormatter
类还提供了解析字符串为日期和时间对象的方法。下面是一些常用的解析示例:
yyyy-MM-dd
:解析字符串为年-月-日的日期对象。HH:mm:ss
:解析字符串为小时:分钟:秒的时间对象。yyyy-MM-dd HH:mm:ss
:解析字符串为年-月-日 小时:分钟:秒的日期时间对象。
String dateStr = "2021-05-01";
String timeStr = "13:45:30";
String dateTimeStr = "2021-05-01 13:45:30";
LocalDate parsedDate = LocalDate.parse(dateStr, formatter1);
LocalTime parsedTime = LocalTime.parse(timeStr, formatter2);
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, formatter3);
System.out.println("Parsed Date: " + parsedDate);
System.out.println("Parsed Time: " + parsedTime);
System.out.println("Parsed Date and Time: " + parsedDateTime);
输出结果:
Parsed Date: 2021-05-01
Parsed Time: 13:45:30
Parsed Date and Time: 2021-05-01T13:45:30
预定义的日期时间格式
DateTimeFormatter
类提供了一些预定义的日期时间格式,以方便开发者使用。一些常用的预定义格式包括:
ISO_LOCAL_DATE
:年-月-日格式,例如:2021-05-01。ISO_LOCAL_TIME
:小时:分钟:秒格式,例如:13:45:30。ISO_LOCAL_DATE_TIME
:年-月-日 小时:分钟:秒格式,例如:2021-05-01T13:45:30。
String dateStr = "2021-05-01";
String timeStr = "13:45:30";
String dateTimeStr = "2021-05-01T13:45:30";
LocalDate parsedDate = LocalDate.parse(dateStr, DateTimeFormatter.ISO_LOCAL_DATE);
LocalTime parsedTime = LocalTime.parse(timeStr, DateTimeFormatter.ISO_LOCAL_TIME);
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println("Parsed Date: " + parsedDate);
System.out.println("Parsed Time: " + parsedTime);
System.out.println("Parsed Date and Time: " + parsedDateTime);
输出结果:
Parsed Date: 2021-05-01
Parsed Time: 13:45:30
Parsed Date and Time: 2021-05-01T13:45:30
自定义日期时间格式
除了使用预定义的日期时间格式之外,我们还可以自定义日期时间格式。DateTimeFormatter
类支持多种符号来表示不同的日期时间字段。
例如,我们可以使用以下符号来自定义日期时间格式:
y
:年份,例如:yyyy表示四位数的年份。M
:月份,例如:MM表示两位数的月份。d
:日期,例如:dd表示两位数的日期。H
:小时(24小时制),例如:HH表示两位数的小时。m
:分钟,例如:mm表示两位数的分钟。s
:秒,例如:ss表示两位数的秒。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTimeStr = "2021-05-01 13:45:30";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, formatter);
System.out.println("Parsed Date and Time: " + parsedDateTime);
输出结果:
Parsed Date and Time: 2021-05-01T13:45:30
通过自定义格式,我们可以根据具体需求灵活地格式化和解析日期和时间对象。
总结
在Java中,格式化日期和时间是常见的操作。DateTimeFormatter
类提供了丰富的方法,用于将日期和时间对象以指定的格式输出为字符串,并且支持将字符串解析为日期和时间对象。我们可以使用预定义的格式,也可以自定义日期时间格式,以满足不同的需求。通过灵活运用DateTimeFormatter
类,我们可以更加方便地处理日期和时间。
本文来自极简博客,作者:数字化生活设计师,转载请注明原文链接:Java中的格式化日期时间:DateTimeFormatter类详解