2

您好我正在尝试使用 SimpleDateFormatter 来解析日期Wed, 30 Jun 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"));

但我得到了一个非法的ArgumentException。请帮忙!

4

4 回答 4

4

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

大概删除对 的调用new Date,所以你说Date newDate = poste....就足够了

于 2010-07-06T08:30:20.330 回答
3

您的代码片段无法编译。这个轻微的修改编译和解析成功:

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。

于 2010-07-06T08:33:11.810 回答
1

没有java.util.Date()以 ajava.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
于 2010-07-06T08:34:20.493 回答
1

javadoc 示例显示未转义的逗号,但适用于美国语言环境。因此,要么尝试转义逗号(如 Aaron 建议的那样),要么使用其他构造函数并设置语言环境:

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

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

于 2010-07-06T08:41:55.003 回答