Есть необходимость посчитать разницу между датами в минутах. Проект на Grails, но т.к. Groovy использует Java классы то вопрос будет справедлив и для Java.
Итак необходимо вычесть разницу между датами за вычетом небольшого промежутка:
((Начало - Окончание) - (Начало промежутка - Окончание промежутка)) = минуты
Формат даты - dd.MM.yyyy HH:mm. Для вычитания перевожу даты в миллисекунды, получаю следующий код:
def foo = ((a.time - b.time) - (c.time - d.time))/60000
И все прекрасно считает, но... выявляется баг. При подсчете дат между месяцами, например между 30 апреля 2014 г. и 1 мая 2014 г. появляется один день или 1440 мин, т.е. наверне появляется 31 апреля - которого быть не должно. Более глубокая проверка показала что в расчете все месяцы имеют 31 день, даже февраль.
Где я допустил ошибку? Ведь перевод в миллисекунды дает точное время с 01.01.1970 г. и в этом переводе должны учитываться точное количество дней в году и т.д.