Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期解析魔术_Java_Parsing_Date_Simpledateformat - Fatal编程技术网

Java 日期解析魔术

Java 日期解析魔术,java,parsing,date,simpledateformat,Java,Parsing,Date,Simpledateformat,这是我的密码: private static final DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH); .... private static Date parseIfModifiedSince(HttpServletRequest request) { String lastModifiedHeader = ""; try {

这是我的密码:

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
....
private static Date parseIfModifiedSince(HttpServletRequest request) {
    String lastModifiedHeader = "";
    try {
        lastModifiedHeader = request.getHeader(IF_MODIFIED_SINCE);
        return !StringUtils.isEmpty(lastModifiedHeader) ? DATE_FORMAT.parse(lastModifiedHeader) : null;
    } catch (Exception ex) {
        log.warn("Error while parsing If-Modified-Since date: \"" + lastModifiedHeader+"\"", ex);
        return null;
    }
}
有时我会看到一个例外:

WARN ru.planeta.web.res.ResourcesController 2013-03-29 20:16:58,635: Error while parsing If-Modified-Since date: "Fri, 29 Mar 2013 16:16:28 GMT"
java.lang.NumberFormatException: multiple points

我在代码中找不到任何问题。我怎么了?

SimpleDataFormat
声明为类级变量会使您面临该问题,因为它不是线程安全的。我建议您在每次需要时创建一个新的
SimpleDataFormat
对象,并且只将其分配给方法中的局部变量。

正如@Sarath所提到的,
SimpleDataFormat
不是线程安全的。另一种解决方案是使用线程安全的
FastDateFormat

不确定,但您不需要
dd
来指定两位数的日期吗?-也许这会有帮助。尝试将DF线程设置为本地。。