Получите разницу между двумя датами в месяцах с помощью Java
Мне нужно получить разницу между двумя датами с помощью Java. Мне нужно, чтобы мой результат был в течение нескольких месяцев.
Пример:
Startdate = 2013-04-03 enddate = 2013-05-03 Результат должен быть 1
если интервал
Startdate = 2013-04-03 enddate = 2014-04-03 Результат должен быть 12
Используя следующий код, я могу получить результаты за несколько дней. Как я могу попасть через несколько месяцев?
Date startDate = new Date(2013,2,2);
Date endDate = new Date(2013,3,2);
int difInDays = (int) ((endDate.getTime() - startDate.getTime())/(1000*60*60*24));
Ответы
Ответ 1
Если вы не можете использовать JodaTime, вы можете сделать следующее:
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startDate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(endDate);
int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);
Обратите внимание, что если ваши даты - 2013-01-31 и 2013-02-01, вы получаете расстояние 1 месяц таким образом, что может быть или не быть тем, что вы хотите.
Ответ 2
Вы можете использовать библиотеку времени Joda для Java. Было бы намного проще рассчитать время-diff между датами с ним.
Пример фрагмента для time-diff:
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
Ответ 3
Вы можете попробовать следующее:
Calendar sDate = Calendar.getInstance();
Calendar eDate = Calendar.getInstance();
sDate.setTime(startDate.getTime());
eDate.setTime(endDate.getTime());
int difInMonths = sDate.get(Calendar.MONTH) - eDate.get(Calendar.MONTH);
Я думаю, это должно сработать. Я использовал что-то подобное для своего проекта, и он работал на то, что мне нужно (year diff). Вы получаете Calendar
от Date
и просто получаете разницу в месяц.