2

如何解析像“Sun Feb 24 09:34:20 IST 2013”​​这样的日期字符串。知道为什么解析完整日期格式会失败吗?

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

4 回答 4

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

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

DateFormat仅适用于日期值。很久以前我也遇到过类似的问题。始终检查参考

更新:

正如线程的作者提到的:

伪代码:

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);
于 2013-03-22T11:53:52.150 回答
0

您不能使用DateFormat该类格式化字符串。请改用日期对象。

代替

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

String str = fullDf.format(dt);

它会起作用。

于 2013-03-22T11:59:51.773 回答
0

请换行

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

 String str = fullDf.format(dt);

处理对象比处理它的 toString() 更好,因为默认的 toString() 可能返回与预期完全不同的值

于 2013-03-22T11:56:02.723 回答
0

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

所以只有String str = fullDf.format(dt);工作和String str = fullDf.format(now - dateOffset);工作。

于 2013-03-22T11:57:23.827 回答