🔔简介
在Java中,DateTimeFormatter类用于格式化和解析日期时间对象。它是日期时间格式化的强大而灵活的工具。
🔔作用
🌵1.本地化时间
本地化时间指根据指定的语言环境显示时间
1.1.创建DateTimeFormatter时指定Locale
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
1.2.使用该DateTimeFormatter格式化日期时间
LocalDate date = LocalDate.now();
String cnDate = date.format(formatter);
这样就可以得到适合中国需求的日期格式"2021-10-01"。
1.3.可以通过Locale.US、Locale.UK等地区,从而得到不同格式
DateTimeFormatter usFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy", Locale.US);
DateTimeFormatter ukFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.UK);
LocalDate date = LocalDate.now();
String usDate = date.format(usFormatter); // 10/01/2021
String ukDate = date.format(ukFormatter); // 01/10/2021
1.4.使用预定义的格式化常量指定地区
LocalDate date = LocalDate.now();
String cnDate = date.format(FormatStyle.LONG, Locale.CHINA);
String frDate = date.format(FormatStyle.FULL, Locale.FRANCE);
🌵2.ISO/RFC规范格式
ISO和RFC定义了标准的日期时间格式,可以直接使用:
LocalDate date = LocalDate.now();
// ISO格式
String isoDate = date.format(ISO_LOCAL_DATE);
// RFC格式
String rfcDate = date.format(RFC_1123_DATE_TIME);
🌵3.范式格式化
常见格式化:
年份:
YYYY
:4位数字表示的年份,例如:2023yyyy
:4位数字表示的年份,例如:2023YY
:2位数字表示的年份,例如:23
月份:
MM
:2位数字表示的月份,例如:01表示一月,12表示十二月MMM
:缩写形式的月份,例如:Jan表示一月,Dec表示十二月MMMM
:完整形式的月份,例如:January表示一月,December表示十二月
日:
DD
dd
:2位数字表示的日期,例如:01表示1号,31表示31号
星期几:
ddd
:缩写形式的星期几,例如:Mon表示星期一,Sun表示星期日dddd
:完整形式的星期几,例如:Monday表示星期一,Sunday表示星期日
时间:
HH
:24小时制的小时,例如:00表示午夜12点,23表示晚上11点hh
:12小时制的小时,例如:01表示上午1点,12表示下午12点mm
:分钟,例如:00表示整点,30表示30分钟ss
:秒,例如:00表示整分,59表示59秒a
:上午/下午标识,例如:AM表示上午,PM表示下午
参数列表整理:
示例:
String pattern = "G uuuu'年'MMMd'日' ZZZZZ VV";
String format= DateTimeFormatter.ofPattern(pattern).format(ZonedDateTime.now());
System.out.println(format);
格式化结果显示:
公元 2023年10月01日 +08:00 Asia/hangzhou
范式格式化还提供了一些常用的格式化模式:
LocalDateTime dt = LocalDateTime.now();
// SHORT范式格式化
String shortDt = dt.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT));
// MEDIUM范式格式化
String mediumDt = dt.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));