Czy są jakieś wady korzystania z Joda-Time?

Chcę przekonać kierownika architektury do włączenia Joda-Time do naszego produktu.

Czy znasz jakieś wady w jego używaniu?

Myślę, że Joda-Time musi być stale aktualizowany ze względu na pliki, które zawiera. I to jest wada. Może się mylę.

Czy mógłbyś wyjaśnić ten temat?

Author: cdeszaq, 2008-12-17

7 answers

Miałem prawie całkowicie pozytywne doświadczenia z Joda Time. Moim jedynym problemem była próba zbudowania własnej strefy czasowej (Z uzasadnionych powodów, zapewniam cię:) dostałem kilka bardzo dziwnych wyjątków, a dokumentacja nie była zbyt dobra dla tego konkretnego przypadku użycia.

Jednak w większości przypadków korzystanie z niego było przyjemnością - niezmienność sprawia, że kod jest o wiele łatwiejszy do rozumowania, a bezpieczeństwo dla formaterów jest niezwykle przydatne.

Tak, są pliki na bieżąco-ale przynajmniej możesz je aktualizować. To nie jest tak, że zawierają rzeczy, które były niepotrzebne z Java rzeczy wbudowane, to po prostu z Java mechanizm po prostu nie mógł utrzymać informacji, takich jak strefy czasowe na bieżąco bez znaczących hackery!

Zasadniczo, +1 za używanie czasu Joda. Java data / czas API jest jednym z najgorszych bitów platformy Java, IMO.

 56
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-17 19:49:50

Moim zdaniem najważniejszą wadą Joda-Time jest precyzja: wiele baz danych przechowuje znaczniki czasu z mikrosekundą (a nawet nanosekund ) precyzją. Joda-czas wynosi tylko milisekundy . Jest to dla mnie nie do przyjęcia: wszystkie klasy "modelu danych", których używam, muszą odzwierciedlać pełną precyzję danych w mojej bazie danych. Przybliżenia lub okrojenia moich danych przez Bibliotekę po prostu ich nie wycinają.

Oto uzasadnienie wyboru milisekundowa precyzja, zaczerpnięta z listy dyskusyjnej JSR 310:

"Joda-Time wybrał użycie milisekund, ponieważ ułatwiło konwersje na datę i Kalendarz." - S. Colebourne

Łatwiej dla kogo? Autor biblioteki, można by przypuszczać... Błędna decyzja projektowa, moim zdaniem, kiedy prawie wszystkie bazy danych przechowują czasy do mikrosekundy / nanosekundy precyzji. Lekceważenie wartości bazy danych jest niepokojące.

 34
Author: John O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-14 05:26:07

Największym problemem, jaki mieliśmy podczas korzystania z Joda Time, była integracja z Springiem i Tapestry, ponieważ oboje chcieli użyć wbudowanej daty i godziny. Ciągle pisaliśmy wrappery w getters / setters Dla daty i czasu: albo przechowywaliśmy je jako czas Joda, a jeden zestaw getterów / setterów przepuszczał je, a drugi konwertował w locie, a niektóre klasy przechowywały je wewnętrznie jako datę/czas Javy, a Joda getter / setter musiał przełączać je w locie.

Zasadniczo, to był ból głowy, ponieważ klasy są podobnie nazwane, i jeśli nie możesz dostać całą architekturę (w tym inne biblioteki, które integrujesz), aby przełączyć się na czas Joda, masz zamiar napisać więcej kodu wrappera, niż jest prawdopodobne, aby zapisać za pomocą bibliotek Joda.

 11
Author: Matt Poush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-17 18:46:58

Parleys gospodarze Prezentacja Stephena Colebourne o JSR-310, Pan Colebourne autor Joda-Time I JSR-310. Zaczyna od wyjaśnienia słabości standardowej obsługi daty/czasu w Javie i dlaczego chcesz użyć alternatywy. Pomocne może być pokazanie tej prezentacji menedżerowi architektury. I can ' t seem to deep-link

Powodem, dla którego Joda-Time dość często aktualizuje swój plik strefy czasowej, jest to, że dane strefy czasowej zmieniają się cały czas, często na krótko Uwaga (dzisiaj na slashdot: leap second dodano 2008-12-31) i nie zawsze jest to motywowane naukowo (np. przypominam sobie, że jakieś wyspiarskie państwo Pacyfiku zmieniło strefę czasową, aby być pierwszym krajem, który wejdzie do roku 2000).

 5
Author: Barend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-28 07:35:31

W przeszłości spotykałem się z firmami, które nie chciały włączać zewnętrznego oprogramowania open source lub przynajmniej wymagały od prawnika firmy zaświadczenia, że licencja nie będzie narażać ich na jakąkolwiek odpowiedzialność lub mieć wirusowego wpływu na ich produkt.

Podobnie jak w przypadku innych bibliotek, powinieneś umieścić je pod kontrolą źródła, aby znaleźć wersję, którą wysłałeś z konkretnymi wydaniami kodu, na wypadek gdyby coś poszło nie tak.

 2
Author: Paul Tomblin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-17 18:40:44

Wybór milisekund dla kontinuum czasowego jest dobry do realizacji kalendarzy starożytności i kalendarzy specjalnych. W przeciwieństwie do wielu liczników, licznik 64-bitowy milisekundy ma dobre pokrycie zakresu dla kalendarzy starożytności, z właściwościami rollover przekraczającymi + / - 260 milionów lat.

Nie obsługuje sekund przestępnych. To dobra rzecz. Płynne przejście jest proponowana przez ludzi zegar atomowy, aby umożliwić systemy, które nie wdrażają sekund przestępnych stopniowo dostosuj ich zegary przez 100 sekund, aby uwzględnić korektę sekundy przestępnej.

Utrzymanie tabel stref czasowych również będzie problemem.

Podstawowe kontinuum pozwala również na Stary francuski kalendarz i zegar, który dzielił dzień na 10 interwałów zwanych czasem metrycznym zamiast 24 godzin. Klasyczny chiński Kalendarz dzieli dzień na 100 przyrostów, każdy o długości nieco ponad 14 minut. Wszystkie te kalendarze mogą być realizowane i koordynowane w czasie milisekundy kontinuum.

 2
Author: Steven J. Hathaway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-18 04:15:18

Głównym problemem jest blokada dostawcy przynajmniej dopóki nie stanie się częścią standardu.

W większości przypadków używałbym longów do przechowywania informacji o dacie biznesowej w bazie danych. To daje mi elastyczność, aby dostosować precyzję, jak uważam za stosowne. W większości przypadków po prostu konwertuję je na Javę.util.Data.

Strefy czasowe traktowałbym jako problem z poziomem prezentacji niż problem z danymi. Upraszcza to bazę danych i zwiększa przenośność, ponieważ bazy danych mogą reprezentować w różnych fasonach.

Standardowa Klasa kalendarza zapewnia mi pewne funkcje manipulacji datą, które konwertuję do milisekundy od danych epoki.

Co do nanosekundowej precyzji zapisałbym to jako offset od 0 jako oddzielną długą kolumnę.

 0
Author: Archimedes Trajano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-01 06:55:09