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的使用方法,以及常用的日期格式化样式表。在实际使用中,需要选择合适的日期格式化类和日期格式,避免出现日期转换错误。