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

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

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

2003-11-15 T09:30:47-05:00.

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

如果我将它改为 yyyy-MM-ddThh:mm:ssZ,它将抛出一个异常,因为‘ A’到‘ Z’和‘ a’到‘ z’是保留的。

是否有不涉及使用两种 DateFormat 的解决方案?

31026 次浏览

用单引号围绕 T应该行得通:

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

引自 文件(强调我的) :

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

您的特定用例甚至被包含为一个例子:

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