2010-03-10 28 views
65

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

我想创造一个字母 'T' 是时间,例如之前包括格式字符串:

2003-11-15 牛逼 09:30:47-05:00。

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

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

是否有任何解决方案不涉及使用两个DateFormats?

回答

117

周围的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 
+1

作为记录在http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat。 html –

+0

@Joachim:是的,正要补充:) – Joey