为什么SimpleDateFormat无法在日期字符串中解析工作日?

时间:2013-09-21 20:39:57

标签: java date

运行此程序:

import java.text.*;
import java.util.*;
public class xx {
    public static void main(String[] args) throws Exception {
        final SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
        format.setLenient(false);
        format.parse("Tue, 16 Jan 2010 04:41:09 -0000");
    }
}

给出这个结果(java version "1.7.0_17"):

Exception in thread "main" java.text.ParseException: Unparseable date: "Tue, 16 Jan 2010 04:41:09 -0000"
at java.text.DateFormat.parse(DateFormat.java:357)
at xx.main(xx.java:7)

当设置为非宽松模式时,Tue,前缀似乎无法解析。

问题是,为什么EEE,无法匹配日期字符串的Tue,前缀?

1 个答案:

答案 0 :(得分:6)

那是因为1月16日不是星期二,而是星期六。

public static void main(String args[]) throws ParseException {
    final SimpleDateFormat format = new SimpleDateFormat(
            "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
    format.setLenient(false);
    format.parse("Sat, 16 Jan 2010 04:41:09 -0000");
}

工作正常。