2016-06-10 206 views
0

IM试图了解打印以下输出UTC的概念,并从Java 8困惑瞬间,ZonedDateTime和UTC

Instant from = Instant.from(ZonedDateTime.of(2016, 12, 11, 00, 23, 24, 245, ZoneId.systemDefault())); 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

Date date = simpleDateFormat.parse("2016-06-10 21:19:18"); 

System.out.println("Case1:"); 
System.out.println(date.toInstant()); 
System.out.println(ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())); 

System.out.println("Case2:"); 
System.out.println(from); 
System.out.println(ZonedDateTime.ofInstant(from, ZoneId.systemDefault())); 

新TimeApi:

Case1: 
2016-06-10T19:19:18Z 
2016-06-10T21:19:18+02:00[Europe/Berlin] 

Case2: 
2016-12-10T23:23:24.000000245Z 
2016-12-11T00:23:24.000000245+01:00[Europe/Berlin] 

为什么区偏移量在Case1+02:00小时,在Case2+01:00小时?

回答

2

2016-06-10T19:19:18Z是在六月(当柏林在夏令时:Central European Summer Time)。

2016-12-10T23:23:24.000000245Z是在12月(当柏林不在夏令时:Central European Time)。

因此UTC偏移量是不同的。

+0

当然!我的错! :-)))))) –