Разобрать дату нескольких форматов в Java 8 - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно преобразовать дату из старого формата в новый формат Java 8, есть несколько старых форматов, поэтому он преобразует дату в первый согласованный формат. Как мне это сделать? Большое спасибо.

String oldFormat1 = "MM/dd/yyyy HH:mm:ss a";
String oldFormat2 = "dd/MM/yyyy HH:mm:ss";
String newFormat = "dd/MM/yyyy";

try {
  SimpleDateFormat format = new SimpleDateFormat(oldFormat1);
  Date date = format.parse(dateStr);
  format.applyPattern(newFormat);
  String newDateString = format.format(date);
  return source;
} catch (ParseException e) {
  SimpleDateFormat format = new SimpleDateFormat(oldFormat2);
  Date date = format.parse(dateStr);
  format.applyPattern(newFormat);
  String newDateString = format.format(date);
  return source;
  ...
}

Решение Как упоминалось ниже, я использовал DateTimeFormatter и LocalDateTime для реализации функции.

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendOptional(DateTimeFormatter.ofPattern(oldFormat1))
            .appendOptional(DateTimeFormatter.ofPattern(oldFormat2))
            .toFormatter();
        DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern(newFormat);

        try {
            LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
            String source = newFormatter.format(dateTime);
            return " - " + source;
        } catch (NullPointerException e) {
            log.error("Wrong date: {}", dateStr);
        }
...