如何格式化String" 2016-03-23T11:23:11.305 + 01:00"使用SimpleDateFormat

时间:2016-03-23 13:26:36

标签: java date time simpledateformat parseexception

如何将字符串"2016-03-23T11:23:11.305+01:00"转换为日期?

我已经尝试了以下内容,但是我收到了ParseException。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

2 个答案:

答案 0 :(得分:1)

来自SimpleDateFormat

的javadoc
  

z =时区一般时区太平洋标准时间;太平洋标准时间; GMT-08:00

     

Z =时区RFC 822时区-0800

     

X =时区ISO 8601时区-08; -0800; -08:00   模式字母通常会重复,因为它们的数字决定了确切的呈现方式:

您应该为时区定义SimpleDateFormat X,以便将ISO 8601表示为。{/ p>

String d = "2016-03-23T11:23:11.305+01:00";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date da = df.parse(d);

也取自本文档中的示例

  

" YYYY-MM-DD' T' HH:MM:ss.SSSXXX" = 2001-07-04T12:08:56.235-07:00

答案 1 :(得分:0)

仅使用1 ZSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");