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

Класс OffsetDateTime

Класс OffsetDateTime представляет собой неизменяемую дату и время с фиксированным смещением от UTC (например, +03:00 или -05:00). Он объединяет в себе классы LocalDateTime и ZoneOffset. В отличие от ZonedDateTime, который хранит информацию о часовом поясе с учётом правил перехода на летнее время, OffsetDateTime хранит только фиксированное смещение. Класс находится в пакете java.time и был добавлен в Java 8.

Объекты OffsetDateTime создаются с помощью статических методов now, of и parse. Класс предоставляет методы для получения отдельных компонент: года, месяца, дня, часа, минуты, секунды, наносекунды и смещения. Также доступны методы для арифметических операций над датой и временем.

Синтаксис

OffsetDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) OffsetDateTime.now() OffsetDateTime.parse(text)

Пример

Давайте создадим объект OffsetDateTime с помощью метода of и выведем его на экран:

import java.time.OffsetDateTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { OffsetDateTime odt = OffsetDateTime.of( 2025, 3, 15, 10, 30, 45, 0, ZoneOffset.ofHours(3) ); System.out.println(odt); } }

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

"2025-03-15T10:30:45+03:00"

Пример

Давайте получим текущую дату и время со смещением с помощью метода now:

import java.time.OffsetDateTime; public class Main { public static void main(String[] args) { OffsetDateTime odt = OffsetDateTime.now(); System.out.println(odt); } }

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

"2025-03-15T10:30:45.123+03:00"

Пример

Давайте разберём объект OffsetDateTime на отдельные компоненты с помощью методов getYear, getMonthValue, getDayOfMonth, getHour, getMinute и getOffset:

import java.time.OffsetDateTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { OffsetDateTime odt = OffsetDateTime.of( 2025, 3, 15, 10, 30, 45, 0, ZoneOffset.ofHours(3) ); System.out.println(odt.getYear()); System.out.println(odt.getMonthValue()); System.out.println(odt.getDayOfMonth()); System.out.println(odt.getHour()); System.out.println(odt.getMinute()); System.out.println(odt.getOffset()); } }

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

2025 3 15 10 30 "+03:00"

Пример

Давайте выполним арифметические операции над датой и временем с помощью методов plusDays и minusHours:

import java.time.OffsetDateTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { OffsetDateTime odt = OffsetDateTime.of( 2025, 3, 15, 10, 30, 45, 0, ZoneOffset.ofHours(3) ); OffsetDateTime res = odt.plusDays(5).minusHours(2); System.out.println(res); } }

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

"2025-03-20T08:30:45+03:00"

Пример

Давайте преобразуем объект OffsetDateTime в другие типы с помощью методов toLocalDateTime и toInstant:

import java.time.OffsetDateTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { OffsetDateTime odt = OffsetDateTime.of( 2025, 3, 15, 10, 30, 45, 0, ZoneOffset.ofHours(3) ); System.out.println(odt.toLocalDateTime()); System.out.println(odt.toInstant()); } }

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

"2025-03-15T10:30:45" "2025-03-15T07:30:45Z"

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

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