无法在DateFormat.FULL中解析日期

时间:2013-03-22 11:49:17

标签: java date-format

如何解析日期字符串,例如“Sun Feb 24 09:34:20 IST 2013”​​。 知道为什么解析Full dateformat会失败吗?

DateFormat fullDf = DateFormat.getDateInstance(DateFormat.FULL);
String str = fullDf.format("Sun Feb 24 09:34:20 IST 2013");
System.out.println(str);

例外是:

java.lang.IllegalArgumentException: Cannot format given Object as a Date

4 个答案:

答案 0 :(得分:8)

DateFormat fullDf = DateFormat.getDateInstance(DateFormat.FULL);
String str = fullDf.format(dt); 
System.out.println(str);

我认为问题是format(dt.toString())

DateFormat仅适用于日期值。很久以前我遇到过类似的问题。请务必核对reference

更新

作为线程的作者提到:

<强>伪代码:

DateFormat inFormatter = new SimpleDateFormat(<pattern>);
DateFormat outFormatter = new SimpleDateFormat(<pattern>);

String source; // parsed text from file
Date dt = inFormatter.parse(source);
String output = outFormatter.format(dt);

答案 1 :(得分:0)

请更改

 String str = fullDf.format(dt.toString())

 String str = fullDf.format(dt);

更好地处理对象而不是toString(),因为默认的toString()可能返回一个与预期完全不同的值

答案 2 :(得分:0)

DateFormat的格式函数可以包含对象,但这些对象必须是数字或日期。

因此只有String str = fullDf.format(dt);才有效,String str = fullDf.format(now - dateOffset);才有效。

答案 3 :(得分:0)

您无法使用DateFormat类格式化String。改为使用日期对象。

替换

String str = fullDf.format(dt.toString());

String str = fullDf.format(dt);

它会起作用。