Skip to content

Commit 6947653

Browse files
committed
[bug-69583] DateUtil needs to handle time only dates (issue with 1900 format dates)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1923785 13f79535-47bb-0310-9956-ffa450edef68
1 parent 8ad10c0 commit 6947653

File tree

2 files changed

+89
-68
lines changed

2 files changed

+89
-68
lines changed

poi/src/main/java/org/apache/poi/ss/usermodel/DateUtil.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,12 @@ public static double getExcelDate(Calendar date, boolean use1904windowing) {
220220
return internalGetExcelDate(year, dayOfYear, hour, minute, second, milliSecond, use1904windowing);
221221
}
222222

223+
private static boolean isLastDay1899(final int year, final int dayOfYear) {
224+
return year == 1899 && dayOfYear == 365;
225+
}
226+
223227
private static double internalGetExcelDate(int year, int dayOfYear, int hour, int minute, int second, int milliSecond, boolean use1904windowing) {
224-
if ((!use1904windowing && year < 1900) ||
228+
if ((!use1904windowing && (year < 1900 && !isLastDay1899(year, dayOfYear))) ||
225229
(use1904windowing && year < 1904))
226230
{
227231
return BAD_DATE;
@@ -866,7 +870,7 @@ private static int absoluteDay(int year, int dayOfYear, boolean use1904windowing
866870

867871
static int daysInPriorYears(int yr, boolean use1904windowing)
868872
{
869-
if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1904)) {
873+
if ((!use1904windowing && yr < 1899) || (use1904windowing && yr < 1904)) {
870874
throw new IllegalArgumentException("'year' must be 1900 or greater");
871875
}
872876

0 commit comments

Comments
 (0)