您的位置:

Java日期格式化

Java中关于日期格式化的类主要有两个:SimpleDateFormat和DateTimeFormatter。前者在Java 8及之前的版本中被广泛使用,而后者则是Java 8之后才引入的。无论使用哪个类,它们的目的都是将日期转换为字符串或将字符串转换为日期,并支持自定义格式。

一、SimpleDateFormat类

SimpleDateFormat类位于java.text包中,可以通过它来格式化和解析日期字符串。使用SimpleDateFormat时,首先需要创建一个SimpleDateFormat对象,并指定要使用的日期格式。

1. 创建SimpleDateFormat对象

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

上面的代码创建了一个日期格式为"yyyy-MM-dd HH:mm:ss"的SimpleDateFormat对象。其中,"yyyy"表示4位年份,"MM"表示2位月份,"dd"表示2位日,"HH"表示2位小时,"mm"表示2位分钟,"ss"表示2位秒。

2. 格式化日期为字符串

Date now = new Date();
String nowStr = sdf.format(now);
System.out.println(nowStr);

上面这段代码使用SimpleDateFormat对象将Date类型的now格式化为指定日期格式的字符串,输出结果为:"2022-08-16 20:30:45"

3. 解析字符串为日期

String dateStr = "2022-08-16 20:30:45";
Date date = sdf.parse(dateStr);
System.out.println(date);

上面这段代码使用SimpleDateFormat对象将字符串"2022-08-16 20:30:45"解析为Date类型的date。输出结果为:Tue Aug 16 20:30:45 CST 2022。

需要注意的是,SimpleDateFormat是线程不安全的类,因此在多线程环境下需要进行同步处理或使用ThreadLocal来保证线程安全。

二、DateTimeFormatter类

DateTimeFormatter是Java 8中引入的新的日期时间格式化类,它位于java.time.format包中。相比于SimpleDateFormat,DateTimeFormatter更加严格,支持的日期格式也更加多样化。

1. 创建DateTimeFormatter对象

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

上面的代码创建了一个日期格式为"yyyy-MM-dd HH:mm:ss"的DateTimeFormatter对象。

2. 格式化日期为字符串

 LocalDateTime now = LocalDateTime.now();
String nowStr = now.format(dtf);
System.out.println(nowStr);

上面这段代码使用DateTimeFormatter对象将LocalDateTime类型的now格式化为指定日期格式的字符串,输出结果为:"2022-08-16 20:30:45"

3. 解析字符串为日期

String dateStr = "2022-08-16 20:30:45";
LocalDateTime dateTime = LocalDateTime.parse(dateStr, dtf);
System.out.println(dateTime);

上面这段代码使用DateTimeFormatter对象将字符串"2022-08-16 20:30:45"解析为LocalDateTime类型的dateTime。输出结果为:2022-08-16T20:30:45。

需要注意的是,DateTimeFormatter是线程安全的。在使用DateTimeFormatter对象进行日期格式化和解析时,推荐使用该类操作。

三、日期格式化样式表

在使用Java日期格式化类进行日期格式化时,可以自定义日期格式,也可以使用Java内置的日期格式化样式表。下面列举了几种常用的日期格式化样式表:

样式 描述 示例
yyyy-MM-dd HH:mm:ss 年月日时分秒 2022-08-16 20:30:45
yyyy-MM-dd 年月日 2022-08-16
MM/dd/yyyy 月/日/年 08/16/2022
E, MMM dd yyyy 星期几,月日年 周二,八月 16 2022
hh:mm:ss a 12小时制时分秒 08:30:45 PM
HH:mm:ss 24小时制时分秒 20:30:45

四、总结

Java日期格式化是在实际工作中非常重要的操作,本文介绍了两种主流的Java日期格式化类SimpleDateFormat和DateTimeFormatter的使用方法,以及常用的日期格式化样式表。在实际使用中,需要选择合适的日期格式化类和日期格式,避免出现日期转换错误。