Java OffsetDateTime 类2024 年 10 月 25 日 | 阅读 6 分钟 Java 中的 OffsetDateTime 类是 Java 8 中引入的 java.time 包的一个关键组件。它表示带有时区偏移的日期时间,这对于处理时区和夏令时变化至关重要。它将日期和时间与偏移量相结合,以准确处理时区不同的情况或适用夏令时的情况。 OffsetDateTime 类的特点不可变性: OffsetDateTime 的实例是不可变的,这意味着一旦创建,它们的值就不能更改。 精度: 它以纳秒精度存储日期、时间和偏移量,从而可以进行精确的计算。 偏移量: 它包含与 UTC 的偏移量,这对于处理时区差异至关重要。 兼容性: OffsetDateTime 旨在与 java.time 包中的其他日期时间类兼容,便于无缝转换和互操作。 范围: 它涵盖了从 0001 年 1 月 1 日到 9999 年 12 月 31 日的日期范围,并支持所有有效的偏移量。 与其他日期时间类的区别LocalDateTime: LocalDateTime 不包含任何偏移量信息,也不与任何特定的时区相关联。它表示没有时区信息的日期和时间。 ZonedDateTime: ZonedDateTime 包含日期、时间和时区信息。它表示一个考虑时区规则和夏令时变化的时刻。 Instant: Instant 表示 UTC 时区中的一个时间点,与任何偏移量或时区规则无关。 Java OffsetDateTime 类声明让我们看看 java.time.OffsetDateTime 类的声明。 说明 1. public final class OffsetDateTime extends Object public final class: 这表示 OffsetDateTime 是 Java 中的一个公共最终类。作为一个最终类,这意味着它不能被其他类继承或扩展。这种设计决策确保了 OffsetDateTime 的行为不会被子类更改或覆盖。 OffsetDateTime: 这是类的名称。它表示带有时区偏移的日期时间,并且是 Java 8 中引入的 java.time 包的一部分。 extends Object: 在 Java 中,除非明确指定,否则所有类都隐式地继承 Object 类。Object 类是 Java 中类层次结构的根,为所有对象提供常见的方法,例如 toString()、hashCode() 和 equals()。 2. implements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable implements Temporal: 这表明 OffsetDateTime 类实现了 Temporal 接口。Temporal 接口是日期和时间 API (java.time.temporal 包) 的一部分,表示可以操作的日期时间对象。 implements TemporalAdjuster: OffsetDateTime 还实现了 TemporalAdjuster 接口。此接口允许基于规则操作对象,例如调整到下一周或上一周的日期。 Comparable<OffsetDateTime>: OffsetDateTime 使用自身作为类型参数实现 Comparable 接口。这意味着 OffsetDateTime 的实例可以使用 compareTo() 等方法相互比较,从而实现排序和排序操作。 Serializable: 此接口表明 OffsetDateTime 的实例可以被序列化,这意味着它们可以被转换为字节流以进行存储或传输,然后反序列化回对象。这允许 OffsetDateTime 实例被持久化或通过网络发送。 Java OffsetDateTime 类的方法方法 | 描述 |
---|
int get(TemporalField field) | 它用于从此日期时间获取指定字段的值作为 int。 | int getDayOfMonth() | 它用于获取月份的日字段。 | iint getDayOfYear() | 它用于获取一年中的日字段。 | DayOfWeek getDayOfWeek() | 它用于获取星期几字段,它是一个枚举 DayOfWeek。 | OffsetDateTime minusDays(long days) | 它用于返回此 OffsetDateTime 的一个副本,其中减去了指定的日数。 | static OffsetDateTime now() | 它用于从系统时钟获取默认时区中的当前日期时间。 | OffsetDateTime plusDays(long days) | 它用于返回此 OffsetDateTime 的一个副本,其中添加了指定的日数。 | LocalDate toLocalDate() | 它用于获取此日期时间部分的 LocalDate 部分。 | Temporal adjustInto(Temporal temporal) | 它调整指定的时间对象以具有与此对象相同的日期和时间。 | TZonedDateTime atZoneSameInstant(ZoneId zone) | 它将此日期时间与时区结合起来创建一个 ZonedDateTime,确保结果具有相同的时刻。 | TZonedDateTime atZoneSimilarLocal(ZoneId zone) | 它将此日期时间与时区结合起来创建一个 ZonedDateTime,尝试保持相同的本地日期和时间。 | Tint compareTo(OffsetDateTime other) | 它将此日期时间与另一个日期时间进行比较。 | Tboolean equals(Object obj) | 它检查此日期时间是否等于另一个日期时间。 | TString format(DateTimeFormatter formatter) | 它使用指定的格式器格式化此日期时间。 | Tstatic OffsetDateTime from(TemporalAccessor temporal) | 它从时间对象获取 OffsetDateTime 的一个实例。 | Tint getHour() | 它获取一天中的小时字段。 | Tlong getLong(TemporalField field) | 它获取指定字段的值,该值来自此日期时间,为 long 类型。 | TMonth getMinute() | 它获取一小时的分钟字段。 | TMonth getMonth() | 它使用 Month 枚举获取年字段。 | Tint getMonthValue() | 它获取从 1 到 12 的年字段。 | Tint getNano() | 它获取秒的纳秒字段。 | TZoneOffset getOffset() | 它获取时区偏移量,例如 '+01:00'。 | Tint getSecond() | 它获取分钟的秒字段。 | Tint getYear() | 它获取年份字段。 | Tint hashCode() | 它返回此日期时间的哈希码。 | Tboolean isAfter(OffsetDateTime other) | 它检查此日期时间是否晚于指定的日期时间。 | Tboolean isBefore(OffsetDateTime other) | 它检查此日期时间是否早于指定的日期时间。 | Tboolean isEqual(OffsetDateTime other) | 它检查此日期时间是否等于指定的日期时间。 | Tboolean isSupported(TemporalField field) | 它检查是否支持指定的字段。 | Tboolean isSupported(TemporalUnit unit) | 它检查是否支持指定的单位。 | TOffsetDateTime minus(long amountToSubtract, TemporalUnit unit) | 它返回此日期时间的副本,减去指定量。 | TOffsetDateTime minus(TemporalAmount amountToSubtract) | 它返回此日期时间的副本,减去指定量。 | TOffsetDateTime minusMonths(long monthsToSubtract) | 它返回此 OffsetDateTime 的一个副本,其中减去了指定的月数。 | TOffsetDateTime minusHours(long hoursToSubtract) | 它返回此 OffsetDateTime 的一个副本,其中减去了指定的小时数。 | TOffsetDateTime minusMinutes(long minutesToSubtract) | 它返回此 OffsetDateTime 的一个副本,其中减去了指定的分钟数。 | TOffsetDateTime minusNanos(long nanos) | 它返回此 OffsetDateTime 的一个副本,其中减去了指定的纳秒数。 | Tstatic OffsetDateTime of(LocalDate date, LocalTime time, ZoneOffset offset) | 它从日期、时间和偏移量获取 OffsetDateTime 的一个实例。 | Tstatic OffsetDateTime ofInstant(Instant instant, ZoneId zone) | 它从 Instant 和时区 ID 获取 OffsetDateTime 的一个实例。 | Tstatic OffsetDateTime parse(CharSequence text) | 它从文本字符串获取 OffsetDateTime 的一个实例,例如 2007-12-03T10:15:30。 | TValueRange range(TemporalField field) | 获取指定字段的有效值的范围。 | Tlong toEpochSecond() | 它将此日期时间转换为自 1970-01-01T00:00:00Z 的 epoch 以来的秒数。 | TOffsetDateTime truncatedTo(TemporalUnit unit) | 它返回此 OffsetDateTime 的一个副本,其中时间被截断。 | TOffsetDateTime with(TemporalAdjuster adjuster) | 它返回此日期时间的一个调整后的副本。 |
Java OffsetDateTime 类示例:getDayOfMonth()OffsetDateTimeExample1.java 输出 Java OffsetDateTime 类示例:getDayOfYear()OffsetDateTimeExample2.java 输出 Java OffsetDateTime 类示例:getDayOfWeek()OffsetDateTimeExample3.java 输出 Java OffsetDateTime 类示例:toLocalDate()OffsetDateTimeExample4.java 输出 Java OffsetDateTime 类示例:minusDays()OffsetDateTimeExample5.java 输出 2016-05-23T12:12:31.642+05:30
Java OffsetDateTime 类示例:plusDays()OffsetDateTimeExample6.java 输出 2017-09-15T13:50:30.526+05:30
|