Попытка сохранить дату и время из excel в сеттер, используя poi и LocalDateTime и DateTimeFormatter.
DateTimeFormatter format=DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss");
LocalDateTime
dateObj=LocalDateTime.parse(row.getCell(2).getLocalDateTimeCellValue().toString(),format);
dto.setDate(dateObj);
Результат:
java.time.format.DateTimeParseException: Text '2023-01-22T00:00' could not be parsed at index 2
Пожалуйста, посоветуйте мне, что делать? В файле excel дата хранится в 22.01.2023 00:00:00.
getLocalDateTimeCellValue() возвращает объект LocalDateTime из значения ячейки excel
То, что вы пытаетесь сделать, не имеет никакого смысла, если dto#date имеет тип LocalDateTime
. LocalDateTime не сохраняет какой-либо предпочтительный формат, а сохраняет только значение (LocalDate и LocalTime). Когда вы делаете .getLocalDateTimeCellValue().toString()
, вы в основном преобразуете LocalDateTime
в String
с помощью средства форматирования ISO по умолчанию, а затем снова пытаетесь преобразовать его в LocalDateTime
.
Вы используете DateTimeFormatter
не по назначению. Вместо форматирования объекта LocalDateTime
вы пытаетесь без необходимости проанализировать строку. Вам нужен форматированный String
, который вы можете сделать следующим образом:
LocalDateTime dateObj = row.getCell(2).getLocalDateTimeCellValue();
DateTimeFormatter format = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss", Locale.ENGLISH);
String formatted = dateObj.format(format);
Узнайте больше о современном API Date-Time из Trail: Date Time.
Я хочу сохранить его в формате MM/dd/yyyy hh:mm:ss в объекте класса pojo, так же, как данные excel
@TathagataDasgupta - сначала я запутался, думая, что вы хотите проанализировать строку. Я обновил свой ответ в соответствии с вашим требованием.
@TathagataDasgupta Нет, нет. Вы хотите использовать правильный тип данных в своем POJO, то есть LocalDateTime
. Вы хотите отформатировать его в своем пользовательском интерфейсе, а не в своей модели данных.
Что делает
.getLocalDateTimeCellValue()
? Какой тип возврата? Если вы получаетеLocalDateTime
от.getLocalDateTimeCellValue()
, то то, что вы пытаетесь сделать, не имеет никакого смысла.