我正在尝试使用日期格式的两组日期:

DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");


它适用于以下日期:星期五,2016年8月26日13:55:34 +0000

不适用于日期:2016年9月6日,星期二11:57:14 +0100

在+0100日期引发异常。

 Unparseable date: "Tue, 06 Sep 2016 11:57:14 +0100" (at offset 0)
 at java.text.DateFormat.parse(DateFormat.java:555)

最佳答案

它在offset 0处失败,这意味着问题与时区无关,而与字母表示的日期有关。

您应该设置LocaleSimpleDateFormat

    DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
    Date d1 = format.parse("Fri, 26 Aug 2016 13:55:34 +0000");
    Date d2 = format.parse("Tue, 06 Sep 2016 11:57:14 +0100");


运作没有任何问题。

如果还需要检索时区,则还必须在模式中添加z

    DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);

关于java - SimpleDateFormat引发+0100的解析异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39369082/

10-13 06:47