我正在尝试将以下日期格式'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成功解析

最佳答案

SimpleDateFormatDateTimeFormatter不同。要解析样本日期,您应该在第二个分数上添加一个“ 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/

10-12 06:00