2014-10-23 22 views
6

Stwierdziłem, że Java 8 nie ma odpowiednika ZonedDateTime, ale działa tylko z czasem (klasa ZonedTime lub coś podobnego). Wiem, że zawierają one klasę OffsetTime, ale przechowuje ona tylko przesunięcie.Java 8, dlaczego nie klasa ZonedTime?

Przechowywanie stref czasowych wraz z datą i godziną, zamiast tylko przechowywać offset, pomaga radzić sobie z łatwiejsze letniego.

Nie pytam was, aby dać mi alternatywy, wiem, że istnieje wiele sposobów; Zastanawiam się tylko, dlaczego ta klasa nie została uwzględniona, czy jest to kwestia projektowania? lub po prostu uznali, że jest zbędny?

+0

Twoje pytanie nie ma sensu. Mówisz "Java 8 nie ma odpowiednika ZonedDateTime", jednocześnie zawiera link do bardzo Javy 8, który definiuje klasę ZonedDateTime w pakiecie Java 8. –

+0

Akceptuję, że może moje pytanie nie było dobrze sformułowane, ale myślę, że to nadal aktualne. Myślę, że większość ludzi ma rację. –

+0

Po trzecim czytaniu wydaje się, że twoje zadanie dotyczy klasy, która definiuje wartość tylko w czasie dnia bez daty, ale ma przesunięcie względem czasu UTC, a nawet strefy czasowej. Jak słusznie stwierdza [przyjęta odpowiedź Meno Hochschilda] (http://stackoverflow.com/a/26541249/642706), może wydawać się to intuicyjnie dobrym pomysłem, ale jest problematyczne. Strefy czasowe i przesunięcia są redefiniowane z powodu polityki i granic, czasu letniego i innych anomalii. Bez daty strefa czasowa nie ma określonego znaczenia. –

Odpowiedz

10

Wprowadzenie klasy ZonedTime składającej się z LocalTime i strefy czasowej (zamiast prostego przesunięcia) byłoby poważnym błędem.

Sugerowany typ nie zawiera daty. Ale bez daty nie będzie możliwe oszacowanie rzeczywistego przesunięcia strefy czasowej, aby odwzorować czas lokalny na dowolny rozsądny czas globalny. Aby uwzględnić wszystkie aspekty dotyczące czasu letniego, musisz mieć również datę i godzinę.

+1

Myślałem o tym wcześniej, ale myślę, że byłby przydatny w niektórych przypadkach. W każdym razie, dziękuję za odpowiedź. Używałbym go na przykład do przechowywania czasu w szkolnym harmonogramie; Nie zamierzam wykonywać konwersji, dla których ważna jest data, chcę tylko wiedzieć, która godzina zaczyna się i kończy, aby pokazać ją użytkownikom w innych częściach świata. –

+0

@JuanLhc Aby pokazać godziny rozpoczęcia i zakończenia zajęć osobom z innych części świata, musisz znać datę. W przeciwnym razie nie będzie możliwe określenie różnicy w przesunięciach, ponieważ nie można ustalić, czy należy zastosować przesunięcie czasu letniego lub zimowego. – bowmore

+0

Masz całkowicie rację. Dzięki za twoją odpowiedź! –