代码之家  ›  专栏  ›  技术社区  ›  Gordon

在SimpleDateFormat模式字符串中使用字母字符

  •  70
  • Gordon  · 技术社区  · 14 年前

    是否可以在SimpleDateFormat模式字符串中包含字母字符?

    我正在尝试创建一个格式字符串,其中在时间之前包含字母“t”,例如:

    2003年11月15日 T 09:30:47-05:00。

    我正在使用 yyyy-MM-ddhh:mm:ssZ 作为模式字符串。

    如果我把它改成 yyyy-MM-ddThh:mm:ssZ 它将引发异常,因为“a”到“z”和“a”到“z”是保留的。

    有没有不涉及使用两种日期格式的解决方案?

    1 回复  |  直到 11 年前
        1
  •  127
  •   Joey    14 年前

    围绕着 T 单引号应该有效:

    yyyy-MM-dd'T'hh:mm:ssZ
    

    引用 the documentation (强调我的):

    日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串内,来自 'A' 'Z' 'a' 'z' 被解释为表示日期或时间字符串组件的模式字母。 文本可以用单引号引起来( ' )避免解释。 "''" 表示单引号。所有其他字符都不会被解释;它们只是在格式化期间复制到输出字符串中,或者在解析期间与输入字符串匹配。

    您的特定用例甚至包括在示例中:

    Date and Time Pattern            Result
    -------------------------------------------------------------
    "yyyy-MM-dd'T'HH:mm:ss.SSSZ"     2001-07-04T12:08:56.235-0700