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; }
我不知道它对你是否仍然有用,但我现在遇到同样的问题,稍后我想出了这个问题。