您好我正在尝试使用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。请帮忙!
答案 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和值)。