Вы должны действительно переключиться на java.time
(как уже предлагалось в одном из комментариев ниже вашего вопроса). Это не сложнее, чем устаревшие временные классы из java.util
, но менее подвержено ошибкам и более мощное в отношении смещений, часовых поясов, летнего времени и множества различных календарей, которые есть в мире.
См. Этомаленький пример:
public static void main(String[] args) {
String dateString = "2019-10-30 12:17:47";
// define your pattern, should match the one of the String ;-)
String datePattern = "yyyy-MM-dd HH:mm:ss";
// parse the datetime using the pattern
LocalDateTime ldt = LocalDateTime.parse(dateString,
DateTimeFormatter.ofPattern(datePattern));
// print it using a different (here a built-in) formatting pattern
System.out.println(ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
// or you just use the one defined by you
System.out.println(ldt.format(DateTimeFormatter.ofPattern(datePattern)));
// or you define another one for the output
System.out.println(ldt.format(DateTimeFormatter.ofPattern("MMM dd yyyy HH-mm-ss")));
}
Вывод в моей системе выглядит следующим образом:
2019-10-30T12:17:47
2019-10-30 12:17:47
Okt 30 2019 12-17-47