我在字符串和值"18,June 2017, 5:39AM"
和{}中有一个日期
"01,July 2017, 9:09AM"
。现在我想以这种格式将这些日期转换为"2017-06-18 18:47:17"
。我使用了这段代码:
String testDate = "18,June 2017, 5:39AM";
SimpleDateFormat formatter = new SimpleDateFormat("dd,MMMM yyyy , HH:mm a", Locale.ENGLISH);
Date date = formatter.parse(testDate);
System.out.println(date);
但我有一个例外:
线程中的异常" main" java.text.ParseException:Unparseable date:" 18,June 2017,5:39 AM"
在java.text.DateFormat.parse(DateFormat.java:366)
如何将"18,June 2017, 6:47PM"
转换为"2017-06-18 18:47:17"
?
答案 0 :(得分:3)
您必须在逗号周围添加单引号并删除mm
和a
之间的空白
SimpleDateFormat formatter = new SimpleDateFormat("dd','MMMM yyyy',' HH:mma", Locale.ENGLISH);
答案 1 :(得分:1)
您正在使用可怕的日期时间类,这些日期-时间类已被JSR 310中定义的现代 java.time 类取代。
定义格式设置模式以匹配您的输入。
指定Locale
以确定用于翻译月份名称的人类语言,并确定用于决定本地化问题的文化规范。
String input = "18,June 2017, 5:39AM" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "d,MMMM uuuu, h:mma").withLocale( Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
请参阅此code run live at IdeOne.com。
顺便说一句,这种格式化模式很糟糕。向您的数据发布者介绍ISO 8601标准。