Должен ли я использовать классы даты и времени Java или использовать стороннюю библиотеку, такую ​​как Joda Time?

На основании ответа @ chris-dolphin, но используя вспомогательную функцию:

// Creates svg element, returned as jQuery object
function $s(elem) {
  return $(document.createElementNS('http://www.w3.org/2000/svg', elem));
}

var $svg = $s("svg");
var $circle = $s("circle").attr({...});
$svg.append($circle);
146
задан JodaStephen 16 August 2013 в 17:59
поделиться

4 ответа

РЕДАКТИРОВАНИЕ: Теперь, когда Java 8 был выпущен, если можно использовать это, сделать так! java.time даже инструмент для очистки, чем Время Joda, по моему мнению. Однако, если Вы застреваете pre-Java-8, продолжать читать...

Max попросил за и против использования Joda...

Профессионалы:

  • Это работает, очень хорошо. Я сильно подозреваю, что существует гораздо меньше ошибок в Joda, чем стандартные библиотеки Java. Некоторые ошибки в библиотеках Java действительно трудны (если не невозможный) зафиксировать из-за дизайна.
  • Это разработано, чтобы поощрить Вас думать об обработке даты/времени правильным способом - разделение понятия "местного времени" (например, "будят меня в 7:00 везде, где я"), и момент вовремя ("я звоню James в 15:00 PST; это не может быть 15:00, где он, но это - тот же момент")
  • , я полагаю, что это помогает обновить базу данных часового пояса, которая делает изменение относительно часто
  • , Это имеет хорошую историю неизменности, которая делает жизнь партия более легкий IME.
  • Вовлекающий от неизменности, все средства форматирования ориентированы на многопотоковое исполнение, который является большим, потому что Вы почти всегда хотят снова использовать единственное средство форматирования через приложение
  • , у Вас будет преимущество при изучении java.time в Java 8, поскольку они по крайней мере несколько подобны

Недостатки:

  • Это - другой API для изучения (хотя документы довольно хороши)
  • , Это - другая библиотека, чтобы создать против и развернуться
  • при использовании Java 8 существует все еще некоторая работа для миграции навыков
  • , мне не удалось использовать DateTimeZoneBuilder эффективно в прошлом. Это очень редкий вариант использования все же.

Для ответа на oxbow_lakes' идею эффективного создания собственного маленького API вот мои представления того, почему это - плохая идея:

  • Это - работа. Почему действительно работают, когда это было уже сделано для Вас?
  • вновь прибывший А Вашей команде, намного более вероятно, будет знаком с Joda, чем с Вашим API
  • собственной разработки, Вы, вероятно, поймете его превратно для чего-либо вне самого простого использования... и даже если Вы первоначально думаете , Вам только нужна простая функциональность, эти вещи имеют привычку к становлению более сложным, одним крошечным битом за один раз. Управление датой и временем трудно , чтобы сделать правильно. Кроме того, встроенные API Java тверды к , использование правильно - просто смотрит на правила для того, как календарная арифметика даты/времени API работает. Создание чего-либо сверху их является плохой идеей вместо того, чтобы пользоваться хорошо разработанной библиотекой для запуска с.
197
ответ дан Jon Skeet 16 August 2013 в 17:59
поделиться

Ответ: это зависит

, JODA (и JSR-310) является полностью функциональной библиотекой даты/времени, включая поддержку использования с несколькими системами календаря.

Лично я нашел, что JODA был шагом слишком далеко с точки зрения сложности для того, в чем я нуждаюсь. 2 принципала (по моему скромному мнению), путают в стандартном java Date и Calendar, классы:

  1. Они изменяемы
  2. , Они перепутывают понятие Дня месяца года с Момента вовремя

, Хотя они обращены JODA, Вам вполне будет легко к классам самокрутки для YearMonthDay и Instant, которые оба используют классы Java под капотом для фактических "calendrical" вычислений. Тогда Вы не должны ознакомляться с API> 100 классов, другой механизм форматирования/парсинга и т.д.

, Конечно, если Вы действительно должны завершить представление различных хронологий (например, иврит) или хотеть быть в состоянии определить Вашу собственную мнимую Систему календаря (например, для игры Вы пишете), тогда, возможно, JODA или JRS-310 для Вас. В противном случае тогда я предположил бы, что прокрутка Ваше собственное является возможно способом пойти.

выводом спецификации JSR-310 является Stephen Colebourne, который записал JODA в 1-м месте, так будет логически замена JODA.

15
ответ дан oxbow_lakes 16 August 2013 в 17:59
поделиться

Ну, если Вы не намереваетесь ожидать Java 8, надеясь, что они реализуют , лучший API для управления датой и временем, да, использует Joda-разовый . Это - экономия времени, и избегайте многих головных болей.

24
ответ дан Basil Bourque 16 August 2013 в 17:59
поделиться

Все это зависит от того, что Вы делаете с датами. При простом сохранении их их, Java создал на Датах, вероятно, сделает все, к чему Вы хотите их. Однако при выполнении обширного управления датой времени Вы, вероятно, более обеспечены с Joda.

7
ответ дан Anthony Roy 16 August 2013 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: