Как указать формат даты с XSSFSheetXMLHandler.SheetContentsHandler, используя SpringBatch? - PullRequest
0 голосов
/ 27 июня 2019

У меня проблемы с методом org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler.cell(String var1, String var2, XSSFComment var3) относительно атрибута var2. Я использую Spring-Batch, с помощью которого я анализирую файл .xlsx с некоторыми датами в нем. В файле .xlsx даты даны в формате DD/MM/YYYY, однако, как только я достигну метода, указанного выше, атрибут var2 будет читать MM/DD/YY.

Я не понимаю, как вызывается этот метод, поэтому я не знаю, как указать формат даты, чтобы сохранить полное значение года YYYY вместо значения короткого формата YY.

Это вызывает у меня проблемы в других местах, так как 2039 год и выше преобразуются в 39 и выше, которые позже интерпретируются как 1939 и выше.

Спасибо за любую помощь в этом вопросе.

Я полагаю, что следующая проблема связана с проблемой 2038 года здесь . Поскольку текущее определение даты опирается на двоичное число секунд с 1 января 1970 года, указанное в 32 битах, максимальное значение соответствует дате 19 января 2038 года. Поэтому я предполагаю, что последующие методы (org.joda.time.format) .DateTimeFormatter.parseDateTime (String var1)) ожидает только годы до 2038 года, если ему даны только две цифры (YY), хотя существует атрибут iDefaultYear, значение которого равно 2000. Я надеюсь, что, указав ему полный год, он будет работать так, как ожидается.

ожидается: 01/01/2039 -> 01/01/2039 -> 01/01/2039 актуально: 01/01/2039 -> 01/01/39 -> 01/01/1939

1 Ответ

0 голосов
/ 27 июня 2019

Неважно, я думаю, проблема в том, как Excel хранит даты.Я решил свою проблему, отформатировав ячейку в текстовое значение, и все работает отлично.Так что я думаю, что Excel хранит формат короткой даты (YY), хотя я и написал формат длинной даты (YYYY).Поэтому, когда я анализирую файл позже, я читаю YY, что вызывает проблемы, которые у меня возникают.

...