I am converting data to Adabas (days) from Date in Java. But a have difference in dates when I use LocalDate and Calendar. I am using Java 8
public static void printNewLocalDateWithPlusDays(Long daysToAdd) {
LocalDate initDateToCalculate = LocalDate.of(0, 1, 4);
System.out.println("Initial Date To Calculate : " + initDateToCalculate);
LocalDate dateCalculated = initDateToCalculate.plusDays(daysToAdd);
System.out.println("Date calculated : " + dateCalculated);
}
public static void printSimpleDateFormatWithPlusDaysInCalendar(Long daysToAdd) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse("0000-01-04"));
System.out.println("Initial Date To Calculate : " + sdf.format(calendar.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
calendar.add(Calendar.DAY_OF_MONTH, daysToAdd.intValue());
Date time = calendar.getTime();
String dateFormatted = sdf.format(time);
System.out.println("Date calculated : " + dateFormatted);
}
public static void main(String[] args) {
Long daysToAdd = 36580L;
System.out.println("Print dates is less than or equal to " + daysToAdd + " days");
System.out.println("Print Local Date");
printNewLocalDateWithPlusDays(daysToAdd);
System.out.println("----------");
System.out.println("Print Calendar with SimpleDateFormat");
printSimpleDateFormatWithPlusDaysInCalendar(daysToAdd);
System.out.println("----------");
System.out.println("Difference init here");
System.out.println("----------");
daysToAdd = 36581L;
System.out.println("Print dates is greater than or equal to " + daysToAdd + " days");
System.out.println("Print Local Date");
printNewLocalDateWithPlusDays(daysToAdd);
System.out.println("----------");
System.out.println("Print Calendar with SimpleDateFormat");
printSimpleDateFormatWithPlusDaysInCalendar(daysToAdd);
}
I expect the outputs of same, but the actual outputs is different. Why?