java SimpleDateFormat

在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(格式).parse(日期);

线程“main”中的exceptionjava.lang.IllegalArgumentException:非法模式字符'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)

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

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

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

你可以试试

 String format = "yyyy-MM-dd'T'HH:mm:ssz"; 

参考:来自Javadoc

可以使用单引号(’)引用文本以避免解释。

 String testDate = "2007-11-02T14:46:03+01:00"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"); Date date = formatter.parse(testDate); System.out.println(date); 

您可以尝试类似于上面的内容

您可以使用以下链接作为参考

如果您不关心时区,则可以使用此方法。

  public static Date convertToDate(String strDate) throws ParseException { Date date = null; if (strDate != null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); date = sdf.parse(strDate); } return date; } 

我不知道它对你是否仍然有用,但我现在遇到同样的问题,稍后我想出了这个问题。