提问者:小点点

"java. text.ParseException:无法解析日期:"18,June 2017,5:39AM"


我有一个字符串形式的日期和值,如"18, June 2017,5:39AM""01,七月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中的异常:无法解析日期:"18,June 2017,5:39AM"
at java.text.DateForm.parse(DateFormat.java:366)

如何将"18, June 2017,6:47PM"转换为"2017-06-18 18:47:17"


共2个答案

匿名用户

您必须在逗号周围添加单引号并删除mma之间的空白

 SimpleDateFormat formatter = new SimpleDateFormat("dd','MMMM yyyy',' HH:mma", Locale.ENGLISH);

匿名用户

您正在使用被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 ) ;

请参阅此代码在IdeOne.com实时运行。

顺便说一句,这种格式化模式很糟糕。教育你的数据的发布者关于ISO8601标准。