java SimpleDateFormat


问题内容

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

“ 2007-11-02T14:46:03 + 01:00”



字符串日期=“ 2007-11-02T14:46:03 + 01:00”;
字符串格式=“ yyyy-MM-ddTHH:mm:ssz”;
新的SimpleDateFormat(format).parse(date);

线程“主”中的异常java.lang.IllegalArgumentException:非法模式字符“ T”
    在java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)
    在java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)
    在java.text.SimpleDateFormat(SimpleDateFormat.java:501)
    在java.text.SimpleDateFormat(SimpleDateFormat.java:476)

问题答案:

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

本示例直接来自用户指南

DateTime dt = new DateTime("2004-12-13T21:39:45.618-08:00");