Отформатируйте ZonedDateTime и Instant в другой формат строки - PullRequest
0 голосов
/ 26 ноября 2018

Я перечитал литературу для 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 

Но я чувствую, что это плохая практика идолжен быть метод для преобразования в правильный формат в классах.Существует ли такой способ выполнения форматирования, как указано выше, для классов по умолчанию?

1 Ответ

0 голосов
/ 26 ноября 2018

Ниже приведен фрагмент кода.

LocalDate d = LocalDate.now();
LocalTime time = LocalTime.now();
ZoneId zone = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = ZonedDateTime.of(d, time, zone);
String zoneDate = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(zonedDateTime);
ZonedDateTime utcZonedDateTime = zonedDateTime.withZoneSameInstant(ZoneId.of(ZoneOffset.UTC.getId()));
String utcZoneDate = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(utcZonedDateTime);

System.out.println(zoneDate);
System.out.println(utcZoneDate);     

Выходные данные для этого

2018-11-26 02:20:08
2018-11-26 10:20:08

Для получения дополнительной информации, пожалуйста, посетите java doc -> https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

...