Я пытаюсь преобразовать 09:00 UT C в локальный эквивалент следующим образом:
ZoneId localZoneId = ZoneId.of(TimeZone.getDefault().getID());
DateTimeFormatter formatt = DateTimeFormatter.ofPattern("HH:mm").withZone(localZoneId);
ZonedDateTime test = ZonedDateTime.of( 2020 , 4 , 25 , 9 , 0 , 0 , 0 , ZoneId.of("UTC"));
String test2 = formatt.format(test);
System.out.println(test);
System.out.println(test2);
Вывод
2020-04-25T09:00Z[UTC]
02:00
Однако, вместо того, чтобы вручную вводить год, месяц и день, я хочу получить текущий год, месяц, день с локального компьютера, но по-прежнему сохранять часы / минуты в 09: 00. Эта часть кода должна работать следующим образом
ZonedDateTime test = ZonedDateTime.of( currentYear, currentMonth , currentDay, 9 , 0 , 0 , 0 , ZoneId.of("UTC"));
Думал об этом, но похоже, что много кода:
ZonedDateTime dateparse= ZonedDateTime.now();
ZoneId localZoneId = ZoneId.of(TimeZone.getDefault().getID());
DateTimeFormatter formatFullLocal = DateTimeFormatter.ofPattern("HH:mm").withZone(localZoneId);
DateTimeFormatter year = DateTimeFormatter.ofPattern("yy");
String localMachineYearString= year.format(dateparse);
int localMachineYearInt = Integer.parseInt(localMachineYearString);
DateTimeFormatter month= DateTimeFormatter.ofPattern("M");
String localMachineMonthString= month.format(dateparse);
int localMachineMonthInt= Integer.parseInt(localMachineMonthString);
DateTimeFormatter day= DateTimeFormatter.ofPattern("dd");
String localMachineDayString= day.format(dateparse);
int localMachineDayInt= Integer.parseInt(localMachineDayString);
ZonedDateTime test =ZonedDateTime
.of(localMachineYearInt, localMachineMonthInt , localMachineDayInt , 9 , 0 , 0 , 0 , ZoneId.of("UTC"));
Спасибо!