在解析java.text.SimpleDateFormat时,出现了java.lang.IllegalArgumentException: Illegal pattern character 'o'的错误?

5

我想将字符串转换为java.util.Date。为此,我使用了以下代码:

String timeStamp = "Mon Feb 14 18:15:39 IST 2011";
DateFormat formatter = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy");
Date ts = (Date)formatter.parse(timeStamp);

SimpleDateFormat()方法中给出的格式是java.util.Date的格式。当您将util's Date转换为字符串时,它呈现为以下格式('dow mon dd hh:mm:ss zzz yyyy')。但是,当我执行代码时,它会抛出异常。我不知道如何摆脱这个问题。我会发布异常的StackTrace部分。如果有人知道解决方法,感谢您提前告知。

java.lang.IllegalArgumentException: 非法的模式字符'o' 在 java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769) 在 java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576) 在 java.text.SimpleDateFormat.(SimpleDateFormat.java:501) 在 java.text.SimpleDateFormat.(SimpleDateFormat.java:476) 谢谢!

2个回答

16

可以尝试使用这个方法:

DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy");

E 用于表示星期几的文本,M 表示月份名称。


是的,这个格式是正确的。实际上,我从Java文档中得到了util的Date.toString()函数的这个格式。非常感谢你。 - Sagar
1
实际上应该是 HH(0到23小时制)而不是 hh(1到12小时制)。Date.toString 的文档相当令人困惑,我正在提交一个错误报告。 - Paŭlo Ebermann

2

你的答案也是正确的,但与Andreas的答案相同。无论如何,感谢提供链接。 - Sagar
是的,我很抱歉,我是在他写的时候写的。不过他先回答了,所以我并不介意,只要你的问题得到解答就好! - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接