2017-02-17 98 views
-1

我想解析以下日期格式'2017-02-16T17:29:12.12T + 0200'到ZonedDateTimeJava日期自定义格式为ZonedDateTime

我的目标是让ZonedDateTime持有2017-02-16T17:29:12.12未经修改(未转移到系统时区)并与+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

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 
+0

谢谢它有助于 – endryha