解析周五,2017年11月3日09:12:46 java显示不可解决

时间:2017-11-28 10:58:35

标签: java date simpledateformat

Fri,2017年11月3日09:12:46这是我的日期格式,我想在java中使用SimpleDateFormat()解析它

3 个答案:

答案 0 :(得分:1)

试试这个:

    DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
    Date date = df.parse("Fri, 03 Nov 2017 09:12:46");
    System.out.println(date);

答案 1 :(得分:0)

我曾经有过编写一个功能的任务,该功能可以在不事先知道格式的情况下将日期字符串解析为日期。换句话说,如果String是一个有效的日期并且解析为日期而不管它的格式是什么,那么它应该被识别为日期。所以我想出的解决方案是拥有一个包含我支持的所有日期格式的配置文件。我逐个阅读它们并尝试用该格式解析字符串。如果它工作那么好,我停止,因为我得到我的结果,如果不是我继续到最后。如果所有格式都失败,那么字符串要么不是日期,要么是不受支持的格式。当然,添加(和删除)支持的格式不需要代码修改,因为它是我的配置文件。格式的顺序也很重要,因为这样我可以控制,我更喜欢美国格式,欧洲风格或反之亦然。我写了一篇文章,更详细地描述了这个想法。这是链接:Java 8 java.time package: parsing any string to date。标题说它适用于java 8,但一般的想法也适用于早期版本。

答案 2 :(得分:0)

TL;博士

LocalDateTime.parse( 
    "Fri, 03 Nov 2017 09:12:46" , 
    DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) 
)

java.time

现代方法使用java.time类来取代与最早版本的Java捆绑在一起的麻烦的旧日期时间类。避免使用SimpleDateFormat等。

您的输入缺少任何偏离UTC或时区的指示。所以我们解析为LocalDateTime

DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( "Fri, 03 Nov 2017 09:12:46" , f ) ;