Как разобрать строку методом parse() класса SimpleDateFormat, чтобы получить разные форматы при чтении ячеек Excel c помощью библиотеки POI?
Пробую прочитать столбец в документе Excel и добавить прочитанное в список. Чтение формата даты пробую реализовать классом SimpleDateFormat, но требуется прочесть колонку с датой определенного формата и временем определенного формата, только не получается добиться данного результата, не понятно почему выкидывает
java.text.ParseException: Unparseable date: "dd.MM.yyyy"
at java.text.DateFormat.parse(DateFormat.java:366)
at ru.app.doc.ReadExcelData.extractExcelContentByColumnIndex(ReadExcelData.java:73)
at ru.app.doc.ReadExcelData.main(ReadExcelData.java:43)
Может кто нибудь подсказать в чем дело и как это реализовать?
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
String date = "dd.MM.yyyy";
String time = "HH:mm";
if (DateUtil.isCellDateFormatted(cell)) {
// получение формата даты
SimpleDateFormat sdfDate = new SimpleDateFormat(date);
sdfDate.parse(date);
columndata.add(sdfDate.format(cell.getDateCellValue()));
// получение формата времени
SimpleDateFormat sdfTime = new SimpleDateFormat(time, Locale.UK);
sdfTime.parse(time);
columndata.add(sdfTime.format(cell.getDateCellValue()));
} else {
columndata.add((int) cell.getNumericCellValue() + "");
}
break;
case Cell.CELL_TYPE_STRING:
columndata.add(cell.getStringCellValue());
break;
}
Ответы (1 шт):
В метод SingleDateFormat.parse нужно передавать строку, представляющую дату, например 25.10.2020. Тогда он вернёт объект типа java.util.Date
Но, мне кажется, что Вам его вызывать вовсе не нужно. Ведь задача в том, чтобы получить строку из объекта типа Date. А она решается вызовом метода SingleDateFormat.format.
Просто удалите строчки с вызовом метода SingleDateFormat.parse
Если хочется формировать только время для ячеек, в которых нет даты, нужно понять, какую строку возвращает sdfDate.format() для таких ячеек. После этого сравнивать результат sdfDate.format() с этой строкой.