неверный формат даты - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь прочитать ячейку даты из файла Excel, я использую DataFormatter, но проблема в том, что полученный формат неверен (день и месяц инвертированы), пример: в файле Excel: 15/ 03/2018 После прочтения: 03/15/2018

Мне нужно исправить это или преобразовать ячейку в формат строки, чтобы сравнить ее с другой строкой.

Заранее спасибо.

Вот как я читаю ячейку:

DataFormatter formatter = new DataFormatter();
String current_date = formatter.formatCellValue(date_cell);

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Как видно из javadocs вверху, Locale.US и Locale.UK могут смешаться.

После прочтения вы получите соглашение США Месяц / День / Год вместоодин день / месяц / год в Великобритании.

DataFormatter formatter = new DataFormatter(Locale.UK);
0 голосов
/ 05 июня 2018

Попробуйте что-то вроде этого:

String s = "03/15/2018";    
Date d = new Date(s);   
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String t = df.format(d);
System.out.println(t);

(s соответствует вашей переменной current_date и следует сразу после вашего другого кода)

NB: вы должны использовать заглавные буквы M, потому что в date /форматы времени 'm' обозначают минуты (так что я плохо отношусь к предыдущему коду)

NB ^ 2: код "новые даты" определенно устарел и является плохим и неправильным согласно предыдущему обсуждению.Если это имеет значение, возможно, есть более канонический ответ, включающий, по сути, то же самое, но с календарями.

0 голосов
/ 05 июня 2018

Вы можете создать определенный форматер даты, например,

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
df.parse(

(и т. Д.)

Так что, если он правильно читает дату (под которой я подразумеваю, дни считываются днями, имесяцы читаются как месяцы), тогда нужно просто сделать форматировщик даты, соответствующий желаемому результату.

например

SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");

, а затем что-то вроде ... э-э...

String current_date = df.format(date_cell);

или если вам понадобится средство форматирования ячейки, чтобы прочитать значение для вас, это будет немного сложнее.

В качестве отступления:

Обратите внимание, что поскольку SimpleDateFormat относительно прост и прост в использовании, он, вероятно, устарел и считается плохим, злым и неправильным (tm).

(По той причине, что как только вы начинаете вводить такие вещи, как часовые пояса, локализация и различия между календарными системами, вещи очень быстро усложняются (потому что реальный мир грязный), а простые ответы хороши только для быстрого и грязного «локального» исправления)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...