Сначала ваш код неверен. Когда я запускал его в моем часовом поясе (Европа / Копенгаген) только сейчас, я получил
2019-10-29T23: 00Z [GMT]
Не знаюдумаю, что вы запланировали 23:00 по Гринвичу.
Во-вторых, вы можете думать о GMT или UTC как о смещении (нуля от UTC), поэтому правильнее использовать OffsetDateTIme
, чем ZonedDateTime
длявремя. Это также устраняет ваш нежелательный суффикс. В Java (это все, что я могу написать):
LocalDate currentDate = LocalDate.now(ZoneOffset.UTC);
OffsetDateTime gmtZoneTime = currentDate.atStartOfDay(ZoneOffset.UTC)
.toOffsetDateTime();
System.out.println(gmtZoneTime);
Вывод при запуске только сейчас:
2019-10-30T00: 00Z
Редактировать: Вы можете смело считать UTC и GMT синонимами, поскольку java.time делает это (хотя, строго говоря, они могут различаться с точностью до секунды).
Я предположил, что вы также хотели указать дату в UTC, поэтому прошлоэто как аргумент LocalDate.now()
. Если вы хотите, чтобы дата была в другом часовом поясе, передайте этот часовой пояс на LocalDate.now()
, чтобы из кода было понятно, что вы получаете.
Если вам нужен этот конкретный формат в вашем вопросе, pezetem веренв другом ответе, который вам нужно отформатировать в строку:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSxx");
String formattedGmtTime = gmtZoneTime.format(formatter);
System.out.println(formattedGmtTime);
2019-10-30T00: 00: 00.000 + 0000
Это кажется мне многословным, хотя. По крайней мере, я бы пропустил миллисекунды, так как мы знаем, что они равны 0, вероятно, тоже секундыСказал, не зная вашего точного бизнес-кейса.
Ссылка: Разница между UTC и GMT