java SimpleDateFormat

use*_*187 13 java date

在Java中,如何解析包含不代表模式的字母的日期字符串?

"2007-11-02T14:46:03+01:00"
String date ="2007-11-02T14:46:03+01:00";
String format = "yyyy-MM-ddTHH:mm:ssz";
new SimpleDateFormat(format).parse(date);

Exception in thread "main" java.lang.IllegalArgumentException: Illegal pattern character 'T'
    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)
    at java.text.SimpleDateFormat.(SimpleDateFormat.java:501)
    at java.text.SimpleDateFormat.(SimpleDateFormat.java:476)

Bal*_*a R 21

你可以试试

String format = "yyyy-MM-dd'T'HH:mm:ssz";
Run Code Online (Sandbox Code Playgroud)

参考:来自Javadoc

可以使用单引号(')引用文本以避免解释.


Bra*_*ace 5

您尝试解析的时间似乎是ISO 8601格式.SimpleDateFormat遗憾的是,它不支持所有与ISO 8601相同的时区说明符.如果您希望能够正确处理ISO中指定的所有表单,最好的办法是使用Joda时间.

此示例直接来自用户指南:

DateTime dt = new DateTime("2004-12-13T21:39:45.618-08:00");
Run Code Online (Sandbox Code Playgroud)