【问题标题】:getting java.lang.IllegalArgumentException: Illegal pattern character 'o'? while parsing java.text.SimpleDateFormat获取 java.lang.IllegalArgumentException:非法模式字符 'o'?解析 java.text.SimpleDateFormat 时
【发布时间】:2011-06-26 23:03:01
【问题描述】:

我想从字符串转换为 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 的日期转换为字符串时,它采用这种格式('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) 提前谢谢你。

【问题讨论】:

    标签: java date date-format simpledateformat java.util.date


    【解决方案1】:

    试试这个:

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

    E 用于“星期几”作为文本,M 是月份名称。

    【讨论】:

    • 是的,这种格式是正确的。实际上,我从 java 文档中得到了 util 的 Date.toString() 函数的格式。非常感谢。
    • 其实应该是HH(0..23 小时)而不是hh(1..12 小时。Date.toString 的文档很混乱,我只是提交一个关于这个的错误报告。
    【解决方案2】:

    我相信你格式错误,如果你看这里http://download.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html,它的 E 代表星期几,M 代表月份

    【讨论】:

    • 您的答案也是正确的,但与安德烈亚斯的答案相同。无论如何感谢您的链接。
    • 是的,对不起,我在他写的时候写了。不过他确实先回答了,所以我真的不介意,只要你的问题得到回答!
    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 2014-12-11
    • 2015-04-19
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多