public class ParseUtcDateTimeStringTest { @Test public void testUtcStringToDate() { // "Z" at the end of the date time string is for UTC String utcDateStr = "2017-08-28T02:03:41.080Z"; System.out.println("====== testUtcStringToDate: " + utcDateStr); // Parse the utc datetime string to java.time.Instant - defaults formatter to DateTimeFormatter.ISO_INSTANT. Instant instant = Instant.parse(utcDateStr); System.out.println("Parsed instant in UTC: " + instant); // single quote around 'T' DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); // convert to LocalDateTime with default time zone ZoneId defaultZone = ZoneOffset.systemDefault(); System.out.println("defaultZone: " + defaultZone); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of(defaultZone.getId())); System.out.println("Converted localDateTime=" + localDateTime); // convert to ZonedDateTime - you cannot format an Instant, have to convert it to a formattable date time ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.of(defaultZone.getId())); System.out.println("Formatted zonedDateTime=" + formatter.format(zonedDateTime)); // get ZoneOffset and then ZoneRules ZoneOffset zoneOffset = zonedDateTime.getOffset(); System.out.println("zoneOffset: " + zonedDateTime.getOffset()); ZoneRules zoneRules = ZoneRules.of(zoneOffset); System.out.println("zoneRuels: " + zoneRules); // ZoneRules tells if it's daylight savings time... if (zoneRules.isDaylightSavings(instant)) { System.out.println("Auckland summer has daylight saving time, which is 13 hours ahead of UTC"); Assert.assertEquals("2017-08-28T15:03:41.080", formatter.format(zonedDateTime)); } else { System.out.println("Auckland has winter time 12 hours ahead of UTC"); Assert.assertEquals("2017-08-28T14:03:41.080", formatter.format(zonedDateTime)); } } }
java 8 time api test
猜你喜欢
转载自jxee.iteye.com/blog/2391388
今日推荐
周排行