2016-07-19 20 views
0

Ich kann nicht herausfinden, warum Joda Zeit aktualisiert die Zeit und Offset Stunden nach Sommerzeit, aber Java-Zeit nicht.Warum aktualisiert joda Zeit die Zeit und Offset, wenn Java-Zeit nicht?

DateTime dateTime = new DateTime("2016-04-05T10:06:21.636-05:00").withDayOfWeek(5); 

    TemporalField dayOfWeek = WeekFields.ISO.dayOfWeek(); 
    OffsetDateTime offsetDateTime = OffsetDateTime.parse("2016-04-05T10:06:21.636-05:00").with(dayOfWeek, 5); 
    ZonedDateTime zonedDateTime = ZonedDateTime.parse("2016-04-05T10:06:21.636-05:00").with(dayOfWeek, 5); 

    System.out.println("dateTime:   " + dateTime); // 2016-04-08T11:06:21.636-04:00 
    System.out.println("offsetDateTime: " + offsetDateTime); // 2016-04-08T10:06:21.636-05:00 
    System.out.println("zonedDateTime: " + zonedDateTime); // 2016-04-08T10:06:21.636-05:00 
+0

Vielleicht, weil die java8 jsr310-Implementierung ist in der Nähe von Yoda Zeit, aber nicht genau das gleiche? Es gibt feine Unterschiede zwischen den beiden ... wahrscheinlich wäre das einer von ihnen. – GhostCat

+2

Ich schätze: Sie haben keine Zeitzone angegeben, nur einen Offset zu beiden, die Offsetdatumszeit und die zonierten Datumszeitinstanzen. In beiden Fällen haben sie keine Ahnung von Sommerzeit. Wahrscheinlich müssen Sie beim Erstellen des zonenbasierten Datumszeitobjekts eine Zeitzone angeben, und es funktioniert möglicherweise wie erwartet. – Seelenvirtuose

+0

@Seelenvirtuose Danke. Das war das Problem. – Jon

Antwort

1

Sie keine Zeitzone vorsah, nur ein sowohl Offset-, die Offset-Datum Zeit und die in Zonen aufgeteilt Datum Zeitinstanzen. In beiden Fällen haben sie keine Ahnung von Sommerzeit, da dies eine Information der Zeitzone ist.

Sie müssen also eine Zeitzone angeben, wenn Sie das zonierte Datum-Zeit-Objekt erstellen, und dann funktioniert es wie erwartet.