По какой-то причине это выводит числовое значение около 16348. Когда первое и последнее значение даты составляют 0110 и 0201 соответственно. Почему я не получаю дневную стоимость?Дни между двумя датами
import java.util.Scanner;
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Project3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String firstDate = input.next(), lastDate = input.next();
try {
Date date1 = new SimpleDateFormat("MMdd").parse(firstDate);
Date date2 = new SimpleDateFormat("MMdd").parse(lastDate);
System.out.println(Project3.days(date1, date2));
} catch (Exception e) {
//
}
}
public static long days(Date startDate, Date endDate) {
Calendar start = Calendar.getInstance();
start.setTime(startDate);
Calendar end = Calendar.getInstance();
long daysBetween = 0;
while(start.before(end)) {
start.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
}
Расчет разницы между двумя датами является более чем просто вычитанием двух дат или подсчета дней, вам следует рассмотреть возможность использования одобренного API, например JodaTime или нового API времени в Java 8, например [http: // stackoverflow .com/questions/12851934/how-to-find-difference-between-two-joda-time-datetimes-in-minutes/12852021 # 12852021) – MadProgrammer
Пройдя это с помощью отладчика, вы сразу сказали бы, что происходит. –
Подсказка: 16348 дней/365 = 44,7 года. Как насчет реализации общих дат «около 45» лет? – user2864740