Исходя из вашего первого предложения, вы наткнулись на одну из скрытых «особенностей» (то есть ошибок) Java: java.util.Date
должен был быть неизменным, но это не так. (Java 7 обещает исправить это с помощью нового API даты / времени.) Почти каждое корпоративное приложение рассчитывает на различные временные шаблоны , и в какой-то момент вам придется выполнять арифметику по дате и времени.
В идеале вы можете использовать Время Joda , которое используется Календарем Google. Если вы не можете сделать это, я думаю, API, который состоит из оболочки около java.util.Date
с вычислительными методами, похожими на Grails / Rails, и диапазона вашей оболочки (то есть упорядоченной пары, указывающей начало и конец времени период) будет достаточно.
В моем текущем проекте (приложение для учета рабочего времени) мы пытаемся нормализовать все наши даты в одном часовом поясе для Oracle и Java. К счастью, наши требования к локализации невелики (достаточно = 1 часовой пояс). Когда постоянный объект не нуждается в большей точности, чем день, мы используем метку времени от полуночи. Я бы пошел дальше и настаивал на том, чтобы отбросить лишние миллисекунды в самую грубую гранулярность, которую может выдержать постоянный объект (это сделает вашу обработку проще).