OffsetDateTime
Класс OffsetDateTime представляет дату и время со смещением от UTC/Greenwich.
Он хранит все поля даты и времени с точностью до наносекунды, а также смещение от UTC/Greenwich.
Этот класс полезен для представления точных моментов времени с учетом часового пояса.
Импорт
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
Синтаксис
// Создание текущей даты и времени со смещением
fun now(): OffsetDateTime
// Создание из компонентов даты, времени и смещения
fun of(year: Int, month: Int, dayOfMonth: Int, hour: Int, minute: Int, second: Int, nanoOfSecond: Int, offset: ZoneOffset): OffsetDateTime
// Парсинг из строки
fun parse(text: CharSequence): OffsetDateTime
fun parse(text: CharSequence, formatter: DateTimeFormatter): OffsetDateTime
Пример
Создание текущей даты и времени со смещением:
val currentDateTime = OffsetDateTime.now()
println(currentDateTime)
Результат выполнения кода:
String "2025-01-01T12:30:45.123456789+03:00"
Пример
Создание конкретной даты и времени со смещением:
val offset = ZoneOffset.ofHours(3)
val dateTime = OffsetDateTime.of(2025, 12, 31, 15, 30, 45, 0, offset)
println(dateTime)
Результат выполнения кода:
String "2025-12-31T15:30:45+03:00"
Пример
Парсинг строки в формате ISO-8601:
val dateTimeStr = "2025-07-15T10:30:45+02:00"
val dateTime = OffsetDateTime.parse(dateTimeStr)
println(dateTime)
Результат выполнения кода:
String "2025-07-15T10:30:45+02:00"
Пример
Получение отдельных компонентов даты и времени:
val dateTime = OffsetDateTime.parse("2025-03-20T14:25:30+03:00")
val year = dateTime.year
val month = dateTime.monthValue
val day = dateTime.dayOfMonth
val hour = dateTime.hour
val minute = dateTime.minute
val offset = dateTime.offset
println("Year: $year, Month: $month, Day: $day")
println("Hour: $hour, Minute: $minute")
println("Offset: $offset")
Результат выполнения кода:
String "Year: 2025, Month: 3, Day: 20"
String "Hour: 14, Minute: 25"
String "Offset: +03:00"
Пример
Преобразование в LocalDateTime и LocalDate:
val offsetDateTime = OffsetDateTime.parse("2025-08-10T18:45:30-05:00")
val localDateTime = offsetDateTime.toLocalDateTime()
val localDate = offsetDateTime.toLocalDate()
println("LocalDateTime: $localDateTime")
println("LocalDate: $localDate")
Результат выполнения кода:
String "LocalDateTime: 2025-08-10T18:45:30"
String "LocalDate: 2025-08-10"
Смотрите также
-
класс
LocalDateTime,
который представляет дату и время без смещения -
класс
ZonedDateTime,
который представляет дату и время с информацией о часовом поясе -
класс
ZoneOffset,
который представляет смещение от UTC/Greenwich -
класс
DateTimeFormatter,
который используется для форматирования и парсинга дат