Мне нужно преобразовать дату из старого формата в новый формат 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);
}