Java SimpleDataFormatter赢得';t解析!

Java SimpleDataFormatter赢得';t解析!,java,date,format,simpledateformat,Java,Date,Format,Simpledateformat,您好,我正在尝试使用SimpleDataFormatter解析日期Wed,June 2010 15:07:06 CST 我正在使用以下代码 public static SimpleDateFormat postedformat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); Date newDate = new Date(posteformat.parse("Wed, 30 Jun 2010 15:07:06 CST"));

您好,我正在尝试使用SimpleDataFormatter解析日期
Wed,June 2010 15:07:06 CST

我正在使用以下代码

public static SimpleDateFormat postedformat = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
Date newDate = new Date(posteformat.parse("Wed, 30 Jun 2010 15:07:06 CST"));
但我得到了一个非法的辩论例外。请帮忙

postedformat.parse()
返回一个
Date
,并且没有
Date(Date)
构造函数


大概删除对
newDate
的调用,所以您说
datenewdate=poste….
就足够了您的代码片段没有编译。这一微小的修改成功地编译和分析了:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat postedformat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
    Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST");
    System.out.println("newDate = " + newDate);
}

这是在Mac OS X上使用Java 6。

没有
Java.util.Date()
构造函数将
Java.util.Date
作为参数

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormat {
    public static SimpleDateFormat postedformat = 
        new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
    public static void main(String[] args) {
        try {
            Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST");
            System.out.println("Date: " + newDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
产出:

Date: Wed Jun 30 22:07:06 BST 2010

javadoc示例显示了未替换的逗号,但适用于美国地区。因此,请尝试转义逗号(正如Aaron所建议的),或者使用其他构造函数并设置区域设置:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);

另一个问题可能是时区(“CST”),它一方面被弃用,另一方面又模棱两可(根据
java.util.timezone
的javadoc)。测试,如果它在没有时区属性(格式字符串和值)的情况下工作。

您获取的是哪一行IllegalArgumentException?获取解析调用上的异常顺便说一下:不要将SimpleDataFormat用作常量。由于SimpleDataFormat的设计问题,它不能同时由多个线程安全使用。避免此问题的最安全方法是在需要使用SimpleDataFormat时始终创建它的新实例。。。。如果是这样的话,您只需要在解析表达式之后添加.getTime(),就可以使用构造函数new Date(Long)!分析结果已经是一个日期对象。但我预期会出现编译时错误,而不是运行时问题。可能是问题中的输入错误。@schwiz-???你是如何在没有编译的代码中得到解析调用的(运行时)异常的?我没有复制/粘贴代码,我只是键入了一个例子来说明我要做的事情。但是你不应该用
new Date(new Date())