Какова Лучшая практика для управления и хранения дат в Java?

Какова Лучшая практика для управления и хранения Дат, например, использования GregorianCalendar в JAVA-приложении предприятия?

При поиске обратной связи и я консолидирую любые большие ответы в Лучшую практику, которую могут использовать другие. Спасибо!

27
задан BestPractices 30 January 2010 в 15:33
поделиться

4 ответа

JODA - это путь. Почему?

  1. У него есть гораздо более мощный и интуитивно понятный интерфейс, чем стандартная API даты / время
  2. . Не существует проблем с резьбой с форматированием даты / времени. java.text.simpledateFormat не является безреможным (не много людей знают это!)

На некотором этапе будет замена API Java Date / Time (JSR-310). Я считаю, что это будет основано на работе, проделанной теми, которые за Joda, и, как таковые вы будете изучать API, который будет влиять на новый стандарт API Java.

13
ответ дан 28 November 2019 в 05:08
поделиться

JODA Time (100% взаимодействует с JDK)

Joda-Time обеспечивает замену качества для классов даты и времени Java. Дизайн позволяет нескольким системам календарных систем, пока все еще обеспечивает простое API

11
ответ дан 28 November 2019 в 05:08
поделиться
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>

using namespace std;

int main() {
    int iCount = 42;
    ostringstream buf;
    buf << setw(3) << setfill('0') << iCount;
    string s = buf.str();
    cout << s;
}
-121--4690748-

Для начала обсуждения, вот мой опыт:

При создании стандартов для типичного 3-уровневого проекта Java Enterprise, я обычно рекомендую, чтобы проект использовал GregorityCalendar для манипулирования датами. Причина в том, что GregorityCalendar является фактическим стандартом по отношению к любому другому экземпляру календаря, например, юлианскому календарю и т.д. Это признанный календарь в большинстве стран и правильно справляется с високосными годами и т.д. Кроме того, я бы рекомендовал приложению хранить свои даты в формате UTC, чтобы вы могли легко выполнять расчеты дат, такие как поиск разницы между двумя датами (например, если бы оно было сохранено в виде EST, вам пришлось бы учитывать дневное время экономии света). Затем дата может быть локализована в любом часовом поясе, который вам нужен для отображения пользователю, например, локализация в EST, если вы являетесь американской компанией восточного побережья и хотите, чтобы ваша информация о времени отображалась в EST.

-2
ответ дан 28 November 2019 в 05:08
поделиться

Вы можете попытаться вызвать setNeedsDisplay после преобразования, я не уверен, сработает это или нет, но это стоит выстрела.

-121--4998305-

dbext.vim обеспечивает доступ к БД из Vi. Она обеспечивает такие функции, как сохранение соединений, просмотр схемы, история команд, автоматическое завершение и привязка переменных.

Я предполагаю, что есть нечто подобное для Emacs.

-121--5044584-

Лучше всего, как правило, НЕ думать в терминах тяжелых объектов даты, но хранить точку во времени. Это обычно выполняется путем сохранения значения, которое не зависит ни от угловых вариантов, ни от потенциальных проблем синтаксического анализа. Для этого люди обычно хранят количество миллисекунд (или секунд), прошедших с фиксированной точки, которую мы называем эпохой (1970-01-01). Это очень часто, и любой Java API всегда позволяет преобразовать любой вид даты в/из времени, выраженного в мс с момента эпохи.

Это для места хранения. Можно также сохранить, например, предпочтительный часовой пояс пользователя, если это необходимо.

Теперь такая дата в миллисекундах, как

System.out.println( System.currentTimeMillis() );
1264875453

, не очень полезна, когда она отображается конечному пользователю, это само собой разумеющееся.

Поэтому вы используете, например, время Joda, чтобы преобразовать его в какой-то удобный для пользователя формат, прежде чем отобразить его конечному пользователю.

Вы просили о передовой практике, вот мое предположение: хранение «датированных» объектов в БД вместо времени в миллисекундах прямо там с использованием чисел с плавающей точки для представления денежных сумм.

Обычно это огромный кодовый запах.

Итак, Joda time в Java - это способ манипулировать датой, да. Но путь ли Джода ходить на свидания в магазине ? КОНЕЧНО, НЕТ .

25
ответ дан 28 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

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