[转]Java8字符串和时间相互转换,使用模式字母的易错点

发布时间 2024-01-09 14:24:43作者: dirgo

原文地址:Java 8 字符串和时间相互转换_java8字符串转时间-CSDN博客

1. 常见日期转换符号说明
符号 说明 备注
y 年
Y 本周所在的年 如果日期所在的周跨年了,年份就会是第二年的,需要注意
M 月(month-of-year)
d 日(day-of-month)
D 年内的第几天(day-of-year)
H 小时值(24小时制)
h 小时值(12小时制)
m 分钟(minute-of-hour)
s 秒( second-of-minute)
2. 字符串转时间
String dateStr = "2020-12-30 11:25:33";
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime datetime = LocalDateTime.parse(dateStr, inputFormatter);
System.out.println("datetime : " + datetime);

3. 时间转字符串
LocalDateTime datetime = LocalDateTime.of(2020,12,30,11,2,33);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
System.out.println("output str : " + datetime.format(outputFormatter));

4.需要注意的坑
4.1 yyyyMMdd 和 YYYYMMdd
DateTimeFormatter yyyyFormater = DateTimeFormatter.ofPattern("yyyyMMdd");
DateTimeFormatter YYYYFormater = DateTimeFormatter.ofPattern("YYYYMMdd");
LocalDate date = LocalDate.of(2020,12,31);
String ouput_yyyy = date.format(yyyyFormater);
String output_YYYY = date.format(YYYYFormater);
System.out.println("yyyyMMdd:" + ouput_yyyy);
System.out.println("YYYYMMdd:" + output_YYYY);

输出:

yyyyMMdd:20201231
YYYYMMdd:20211231

原因:
20201231日这周算2021年的,因此YYYY是2021。

4.2 yyyyMMdd 和 yyyyMMDD
DateTimeFormatter ddFormater = DateTimeFormatter.ofPattern("yyyyMMdd");
DateTimeFormatter DDFormater = DateTimeFormatter.ofPattern("yyyyMMDD");
LocalDate date = LocalDate.of(2020,3,31);
String ouput_dd = date.format(ddFormater);
String output_DD = date.format(DDFormater);
System.out.println("yyyyMMdd:" + ouput_dd);
System.out.println("yyyyMMDD:" + output_DD);

输出:

yyyyMMdd:20200331
yyyyMMDD:20200391

原因:
DD代表所在年的第几天。 dd代表所在月的第几天。

4.3 HH:mm:ss 和 hh:mm:ss
LocalTime time = LocalTime.of(15, 30,55);
DateTimeFormatter hhFormater = DateTimeFormatter.ofPattern("hh:mm:ss");
DateTimeFormatter HHFormater = DateTimeFormatter.ofPattern("HH:mm:ss");

System.out.println("hh:mm:ss : " + time.format(hhFormater));
System.out.println("HH:mm:ss : " + time.format(HHFormater));

输出:

hh:mm:ss : 03:30:55
HH:mm:ss : 15:30:55

原因:
hh是12小时制,HH是24小时制。
————————————————
版权声明:本文为CSDN博主「WLFIGHTER」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WLFIGHTER/article/details/113752001