Я создаю веб-систему, которая будет использоваться в странах со всего мира. Одним из типов данных, которые должны быть сохранены, являются даты и время.
Каковы плюсы и минусы использования классов даты и времени Java по сравнению со сторонними библиотеками, такими как время Joda ? Я думаю, что эти сторонние библиотеки существуют по уважительной причине, но я никогда не сравнивал их сам.
Ответы:
РЕДАКТИРОВАТЬ: Теперь, когда Java 8 была выпущена, если вы можете использовать это, сделайте это!
java.time
даже чище, чем Joda Time, на мой взгляд. Однако, если вы застряли до Java-8, читайте дальше ...Макс спросил о плюсах и минусах использования Joda ...
Плюсы:
java.time
Java 8, так как они хотя бы немного похожиМинусы:
DateTimeZoneBuilder
эффективно использовать в прошлом. Это очень редкий случай использования.Чтобы ответить на идею oxbow_lakes по эффективному созданию собственного небольшого API, вот мое мнение о том, почему это плохая идея:
источник
java.time.*
для Java 6 и 7: threeten.org/threetenbpНу, если вы не собираетесь ждать Java 8, надеясь, что они реализуют лучший API для манипулирования датой и временем, да, пожалуйста, используйте Joda-Time . Это экономит время и позволяет избежать многих головных болей.
источник
Ответ: это зависит
JODA (и JSR-310) - это полнофункциональная библиотека даты / времени, включающая поддержку для использования с несколькими календарными системами.
Лично я обнаружил, что JODA слишком далеко зашел с точки зрения сложности для того, что мне нужно. 2 основные (ИМХО) ошибки в стандартных java
Date
иCalendar
классах:Несмотря на то, что они решаются JODA, вы обнаружите, что довольно легко свернуть свои собственные классы для
YearMonthDay
иInstant
, которые используют классы java под капотом для реальных «календарных» вычислений. Тогда вам не нужно знакомиться с API более 100 классов, другим механизмом форматирования / разбора и т. Д.Конечно, если вам нужно полное представление различных хронологий (например, иврит) или вы хотите иметь возможность определить свою собственную воображаемую систему Календаря (например, для игры, которую вы пишете), то, возможно, JODA или JRS-310 для вас. Если нет, то я бы предположил, что кататься по-своему - это, возможно, путь.
Лидером по спецификации JSR-310 является Стивен Колебурн, который написал JODA на первом месте, поэтому логически заменит JODA.
источник
Все зависит от того, что вы делаете с датами. Если вы просто сохраняете их, то встроенные в Dates Java, вероятно, сделают все, что вам нужно. Однако, если вы делаете много манипуляций с датой времени, вам, вероятно, лучше с Йодой.
источник
Вы должны использовать библиотеку Joda-Time, потому что:
даты.
Exception in thread "main" org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31": Value 31 for dayOfMonth must be in the range [1,28].
Вам может понравиться эта страница для более подробной информации: http://swcodes.blogspot.com/
источник