项目场景:
当需要将字符串转成DATE时对应带AM或PM转成Date类型
相信有些小伙伴们会发现,转换出的结果不正确问题,下面就来讲讲我遇到的问题。
问题描述
`
转换出来的日期不正确,百度上大部分都是教你如下方式
public static void main(String[] args) {
String str = "4/25/2022 03:48:28 PM";
String strDateFormat = "M/dd/yyyy HH:mm:ss aa";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date ;
try {
date = new SimpleDateFormat(strDateFormat, Locale.ENGLISH).parse(str);
System.out.println(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
然而得到的结果却是
原因分析:
注意:这里 4/25/2022 03:48:28 PM 字符串中的PM表示下午,我们应该得到时间 2022-04-25 15:48:28
问题在:我们转换的字符串是12小时制的,而 HH 表示24小时制。
解决方案:
String strDateFormat = "M/dd/yyyy HH:mm:ss aa"; 这里的 HH 改为 hh
正确的转换如下方式
public static void main(String[] args) {
String str = "4/25/2022 03:48:28 PM";
String strDateFormat = "M/dd/yyyy hh:mm:ss aa";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date ;
try {
date = new SimpleDateFormat(strDateFormat, Locale.ENGLISH).parse(str);
System.out.println(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}