Я перечитал литературу для ZonedDate и Instant и обнаружил, что могу преобразовать местное время в utc с помощью следующего:
LocalDate d = LocalDate.now();
LocalTime time = LocalTime.of(00, 00, 00);
ZoneId zone = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = ZonedDateTime.of(d, time, zone);
System.out.println(zonedDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
Instant instant = zonedDateTime.toInstant();
System.out.println(instant);
Проблема в том, что вывод выглядит следующим образом:
2018-11-26T00:00:00
2018-11-26T08:00:00Z
Я пытаюсь получить обе строки в формате "гггг-мм-дд чч: мм: сс", но мне трудно заставить что-либо работать должным образом.Так как я использую вывод для запроса базы данных MYSQL, я мог бы просто сделать вручную:
String zoneDate = zonedDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
String utcDate = zonedDateTime.toInstant().toString();
zoneDate = zoneDate.replace('T', ' ').replace('Z', ' ');
utcDate = utcDate.replace('T', ' ').replace('Z', ' ');
С моим новым выводом:
2018-11-26 00:00:00
2018-11-26 08:00:00
Но я чувствую, что это плохая практика идолжен быть метод для преобразования в правильный формат в классах.Существует ли такой способ выполнения форматирования, как указано выше, для классов по умолчанию?