Joda Time решает все ваши проблемы с датой/временем. Он имеет тип диапазона данных.
Ответ 4
Если вы хотите избежать использования Joda по какой-то причине, то писать класс, который обертывает пару дат (или базовые значения Long), будет в порядке, но вам нужно будет написать любые методы, необходимые для сравнения диапазонов или определение даты попадания в диапазон и т.д.
Ответ 5
Если вам нужно использовать две разные даты, используйте две разные даты и используйте SimpleDateFormat. Его очень просто использовать.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.parse(new Date());
Ответ 6
Если я понимаю, чего вы хотите. Вы могли бы просто использовать две метки времени. Альтернативная временная метка и период времени.