83

是否可以在 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”。

有没有不涉及使用两个 DateFormats 的解决方案?

4

1 回答 1

152

T单引号括起来应该可以工作:

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

引用文档(强调我的):

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

您的特定用例甚至作为示例包括在内:

Date and Time Pattern            Result
-------------------------------------------------------------
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"     2001-07-04T12:08:56.235-0700  
于 2010-03-10T12:31:10.510 回答