我正在尝试将以下日期格式“2017-02-16T17:29:12.12T + 0200”解析为ZonedDateTime
。
我的目标是让{16}保持2017-02-16T17:29:12.12 ZonedDateTime
未修改(不转移到系统时区)并与+2小时(来自GMT)所代表的时区相关联
@Test
public void testParseCustomDate() throws Exception {
String format = "yyyy-MM-dd'T'HH:mm:ss.S'T'Z";
String value = "2017-02-16T17:29:12.12T+0300";
Date date = new SimpleDateFormat(format).parse(value);
System.out.println(date);
ZonedDateTime dateTime = ZonedDateTime.parse(value, DateTimeFormatter.ofPattern(format));
System.out.println(dateTime);
}
在上面的示例中,SimpleDateFormat
成功解析了日期,但ZonedDateTime.parse
未成功解析日期
答案 0 :(得分:1)
SimpleDateFormat和DateTimeFormatter不同。要解析您的样本日期,您应该为第二个分数添加一个“S”:
String format = "yyyy-MM-dd'T'HH:mm:ss.SS'T'Z";
它将产生以下输出:
Thu Feb 16 15:29:12 CET 2017
2017-02-16T17:29:12.120+03:00