Вы должны добавить конструктор в ChoiceVoteCount.
Для большей безопасности можно также добавить конструктор по умолчанию.
public ChoiceVoteCount() {
}
public ChoiceVoteCount(Long choiceId, Long voteCount) {
this.choiceId = choiceId;
this.voteCount = voteCount;
}
Я взглянул бы на библиотеку даты/времени Joda и в особенности класс ReadableInterval.
Joda делает жизнь намного легче при управлении датами/временами в Java, и я полагаю, что это - основа новых дат/времен Java JSR 310 wrt.. т.е. это (или что-то очень похожее) будет присутствовать в будущей версии Java.
Это похоже на Дату, Календарь, и DateUtils сделает все, что Вы ищете. http://commons.apache.org/lang/api/org/apache/commons/lang/time/DateUtils.html
DateUtils позволяет усекать или округлять время, таким образом, можно просто иметь дело только с датами. Вы также упомянули летнее время. Основная проблема состоит в том, когда кто-то говорит, что они сделали что-то в 1:30 в день, где было изменение DST..., какое 1:30 было ею? Первый или второе? К счастью это может быть обработано по календарю класс, так как он хранит смещение DST и часовой пояс. Для специфических особенностей всего этого проверьте это: http://www.xmission.com/~goodhill/dates/deltaDates.html
Вот статья, обсуждая использование средств Даты/Календаря в Java для вычисления прошедшего времени.