我正在尝试将以下日期格式'2017-02-16T17:29:12.12T + 0200'解析为ZonedDateTime
。
我的目标是让ZonedDateTime
保持未修改的2017-02-16T17:29:12.12(不移至系统时区),并与以+2小时表示的时区(从格林尼治标准时间开始)关联。
@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
成功解析 最佳答案
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
关于java - Java日期自定义格式为ZonedDateTime,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42296294/