SimpleDateFormat - 非法模式字符'o'

时间:2013-11-05 00:00:30

标签: java date

这是我的代码:

new java.text.SimpleDateFormat("hh hours, mm minutes and ss seconds.").format(new java.util.Date(milliseconds));`

我收到此错误:

java.lang.IllegalArgumentException: Illegal pattern character 'o'
at java.text.SimpleDateFormat.compile(Unknown Source)
at java.text.SimpleDateFormat.initialize(Unknown Source)

我做错了什么?

3 个答案:

答案 0 :(得分:2)

javadoc

  

可以使用单引号(')引用文字以避免解释。   “''”代表单引号。所有其他角色都没有   解释;它们只是简单地复制到输出字符串中   在解析期间格式化或匹配输入字符串

因此''围绕你不想解释的String的任何部分,比如

new java.text.SimpleDateFormat("hh 'hours', mm 'minutes and' ss 'seconds.'")

答案 1 :(得分:1)

格式字符串不正确。查看doc并按照您希望的格式提供格式字符串。 Java Doc

在您的情况下,以下行将有效。

    new java.text.SimpleDateFormat("hh 'hours', mm 'minutes and' ss 'seconds.'")

使用单引号以避免误解。

答案 2 :(得分:1)

这应该有效:

String val = new java.text.SimpleDateFormat(
                 "hh 'hours', mm 'minutes and', ss 'seconds.'").
                 format(new java.util.Date(100000));

System.out.println(val);

documentation日期时间和模式:

  

日期和时间格式由日期和时间模式字符串指定。   在日期和时间模式字符串中,从“A”到“Z”的不带引号的字母   从'a'到'z'被解释为代表的模式字母   日期或时间字符串的组成部分。 可以使用引用文字   单引号(')以避免解释。

希望它有所帮助。