Java中的格式化日期时间:DateTimeFormatter类详解

数字化生活设计师 2019-10-14 ⋅ 22 阅读

在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类,我们可以更加方便地处理日期和时间。


全部评论: 0

    我有话说: