РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
950 of 1163 menu

Метод withZoneSameInstant

Метод withZoneSameInstant класса ZonedDateTime возвращает копию текущего объекта даты-времени с той же временной точкой (instant), но в другой временной зоне. Это означает, что момент времени сохраняется, а локальное представление даты и времени пересчитывается под новую зону. В параметр мы передаем объект ZoneId - временную зону, в которую нужно перевести дату-время.

Синтаксис

zdt.withZoneSameInstant(zone)

Пример

Давайте создадим дату-время в зоне Europe/Paris и переведем ее в зону Asia/Tokyo, сохраняя тот же момент времени:

import java.time.ZonedDateTime; import java.time.ZoneId; public class Main { public static void main(String[] args) { ZonedDateTime zdt = ZonedDateTime.of( 2025, 12, 25, 12, 0, 0, 0, ZoneId.of("Europe/Paris") ); ZonedDateTime res = zdt.withZoneSameInstant( ZoneId.of("Asia/Tokyo") ); System.out.println(zdt); System.out.println(res); } }

Результат выполнения кода:

2025-12-25T12:00+01:00[Europe/Paris] 2025-12-25T20:00+09:00[Asia/Tokyo]

Пример

Давайте убедимся, что момент времени не меняется, сравнив объекты Instant до и после преобразования:

import java.time.ZonedDateTime; import java.time.ZoneId; import java.time.Instant; public class Main { public static void main(String[] args) { ZonedDateTime zdt = ZonedDateTime.of( 2025, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC") ); ZonedDateTime res = zdt.withZoneSameInstant( ZoneId.of("America/New_York") ); Instant instant1 = zdt.toInstant(); Instant instant2 = res.toInstant(); System.out.println(instant1); System.out.println(instant2); System.out.println(instant1.equals(instant2)); } }

Результат выполнения кода:

2025-01-01T00:00:00Z 2025-01-01T00:00:00Z true

Пример

Давайте переведем дату-время в системную временную зону по умолчанию:

import java.time.ZonedDateTime; import java.time.ZoneId; public class Main { public static void main(String[] args) { ZonedDateTime zdt = ZonedDateTime.of( 2025, 6, 15, 10, 30, 0, 0, ZoneId.of("UTC") ); ZonedDateTime res = zdt.withZoneSameInstant( ZoneId.systemDefault() ); System.out.println(zdt); System.out.println(res); } }

Результат выполнения кода (зависит от системной зоны):

2025-06-15T10:30Z[UTC] 2025-06-15T13:30+03:00[Europe/Moscow]

Смотрите также

  • класс ZonedDateTime,
    который представляет дату-время с временной зоной
  • метод toInstant,
    который возвращает момент времени объекта
  • класс ZoneId,
    который представляет временную зону
  • метод toLocalDateTime,
    который возвращает локальную дату-время
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить