НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1000 of 1310 menu

Метод withZone

Метод withZone класса DateTimeFormatter устанавливает часовой пояс для форматтера. В параметр мы передаем объект ZoneId, представляющий часовой пояс. Метод возвращает новый форматтер с установленным часовым поясом, при этом исходный форматтер остается неизменным.

Импорт

import java.time.format.DateTimeFormatter import java.time.ZoneId

Синтаксис

fun withZone(zone: ZoneId): DateTimeFormatter

Пример

Создадим форматтер с часовым поясом Нью-Йорка и отформатируем текущее время:

import java.time.ZonedDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter val formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME val nyFormatter = formatter.withZone(ZoneId.of("America/New_York")) val currentTime = ZonedDateTime.now() val formatted = nyFormatter.format(currentTime) println(formatted)

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

String "2025-09-10T06:30:45.123-04:00[America/New_York]"

Пример

Парсинг строки с датой-временем с использованием форматтера с определенным часовым поясом:

import java.time.ZonedDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter val dateStr = "2025-12-31T23:59:59Z" val formatter = DateTimeFormatter.ISO_DATE_TIME.withZone(ZoneId.of("Europe/London")) val zonedDateTime = ZonedDateTime.parse(dateStr, formatter) println(zonedDateTime)

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

String "2025-12-31T23:59:59Z[Europe/London]"

Пример

Сравнение форматирования с разными часовыми поясами:

import java.time.ZonedDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter val zdt = ZonedDateTime.now() val baseFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z") val tokyoFormatter = baseFormatter.withZone(ZoneId.of("Asia/Tokyo")) val londonFormatter = baseFormatter.withZone(ZoneId.of("Europe/London")) println("Tokyo: " + tokyoFormatter.format(zdt)) println("London: " + londonFormatter.format(zdt))

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

String "Tokyo: 2025-09-10 19:30:45 JST" String "London: 2025-09-10 11:30:45 BST"

Пример

Использование системного часового пояса по умолчанию:

import java.time.ZonedDateTime import java.time.ZoneId import java.time.format.DateTimeFormatter val formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME.withZone(ZoneId.systemDefault()) val currentTime = ZonedDateTime.now() println(formatter.format(currentTime))

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

String "2025-09-10T14:30:45.123+03:00[Europe/Moscow]"

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

  • метод ofPattern класса DateTimeFormatter,
    который создает форматтер по шаблону
  • метод format класса DateTimeFormatter,
    который форматирует дату-время в строку
  • метод parse класса DateTimeFormatter,
    который парсит строку в дату-время
  • класс ZoneId,
    который представляет идентификатор часового пояса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить