SimpleDateFormatter不会解析!

时间:2010-07-06 08:18:19

标签: java date format simpledateformat

您好我正在尝试使用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 个答案:

答案 0 :(得分:4)

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

可能会删除对new Date的来电,因此您说Date newDate = poste....就足够了

答案 1 :(得分: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.

答案 2 :(得分:1)

没有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

答案 3 :(得分:1)

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

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

另一个问题可能是时区('CST')在现场被弃用而在另一方面是不明确的(根据java.util.TimeZone的javadoc)。测试,如果它没有timezone属性(格式为String和值)。