Java日期自定义格式为ZonedDateTime

时间:2017-02-17 11:03:57

标签: java datetime

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

1 个答案:

答案 0 :(得分:1)

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