in freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java [167:187]
private static synchronized Object toDateCellValue(Cell cell) {
final Date date = cell.getDateCellValue();
// "Time-only" values have date set to 31-Dec-1899 so if year is "1899"
// you can assume it is a "time-only" value
final String year = YEAR_TIME_FORMAT.format(date);
if (year.equals("1899")) {
// handle "Time-only" value
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalTime();
} else {
// here you may have a date-only or date-time value
final String timeStamp = TIME_DATE_FORMAT.format(date);
if (timeStamp.equals("00:00:00")) {
// if time is 00:00:00 you can assume it is a date only value (but it could be midnight)
return new java.sql.Date(date.getTime()).toLocalDate();
} else {
return date;
}
}
}