ZonedDateTime 类

定义

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

[Android.Runtime.Register("java/time/ZonedDateTime", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class ZonedDateTime : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Time.Chrono.IChronoZonedDateTime
[<Android.Runtime.Register("java/time/ZonedDateTime", ApiSince=26, DoNotGenerateAcw=true)>]
type ZonedDateTime = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IChronoZonedDateTime
    interface IComparable
    interface ITemporal
    interface ITemporalAccessor
继承
ZonedDateTime
属性
实现

注解

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

ZonedDateTime 是具有时区的日期时间的不可变表示形式。 此类将所有日期和时间字段存储到纳秒精度和时区,以及用于处理不明确的本地日期时间的区域偏移量。 例如,值“2007 年 10 月 2 日 13:45.30.123456789 +02:00”可以存储在一个 ZonedDateTime区域中。

此类处理从本地时间行 LocalDateTime 到即时时间线的 Instant转换。 两个时间线之间的差异是 UTC/格林威治的偏移量,由 a ZoneOffset表示。

在两个时间线之间进行转换涉及使用从中ZoneRules rules访问的ZoneId偏移量计算偏移量。 获取即时偏移量非常简单,因为每个即时的偏移量正好有一个有效偏移量。 相比之下,获取本地日期时间的偏移量并不简单。 有三种情况: <ul><li>Normal,一个有效偏移量。 对于大部分年份,正常情况适用,其中本地日期时间存在单个有效偏移量。</li li><>Gap,具有零有效偏移量。 这是当时钟跳跃通常是由于春夏令时从“冬天”更改为“夏天”。 在间隙中,存在没有有效偏移量的本地日期时间值。</li li><>Overlap,具有两个有效偏移量。 这是当时钟被设置通常由于秋季夏令时从“夏季”更改为“冬季”。 在重叠中,有两个有效偏移量的本地日期时间值。</li></ul>

通过获取偏移量,从本地日期时间直接或隐式转换为即时的任何方法都有可能很复杂。

对于 Gap,一般策略是,如果本地日期时间在 Gap 中间下降,则生成的区域日期时间将按 Gap 的长度向前移动本地日期时间,从而导致日期时间在以后的偏移量(通常是“夏季”时间)。

对于重叠,一般策略是,如果本地日期时间处于重叠中间,则保留以前的偏移量。 如果没有以前的偏移量,或者以前的偏移量无效,则使用以前的偏移量,通常是“summer”时间。 另外两种方法 #withEarlierOffsetAtOverlap() ,以及 #withLaterOffsetAtOverlap()帮助管理重叠情况。

在设计方面,此类应主要被视为 a LocalDateTime 和 a ZoneId的组合。 ZoneOffset这是一个至关重要但次要的信息片段,用于确保类表示即时,尤其是在夏令时重叠期间。

已在 1.8 中添加。

适用于 . 的 java.time.ZonedDateTimeJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
DayOfMonth

获取月份日期字段。

DayOfWeek

获取星期几字段,该字段是枚举 DayOfWeek。

DayOfYear

获取年份日期字段。

Handle

基础 Android 实例的句柄。

(继承自 Object)
Hour

获取“天小时”字段。

JniIdentityHashCode

获取互操作运行时分配给此Java对等的标识哈希代码。

(继承自 Object)
JniManagedPeerState

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
JniPeerMembers

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

Minute

获取小时分钟字段。

Month

使用 Month 枚举获取年月字段。

MonthValue

获取从 1 到 12 的年月字段。

Nano

获取 nano-of-second 字段。

Offset

获取区域偏移量,例如“+01:00”。

PeerReference

获取此Java对等方的 JNI 对象引用。

(继承自 Object)
Second

获取分钟秒字段。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
Year

获取年份字段。

Zone

获取时区,例如“欧洲/巴黎”。

方法

名称 说明
Clone()

创建并返回此对象的副本。

(继承自 Object)
CompareTo(Object)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

Construct(JniObjectReference, JniObjectReferenceOptions)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
Dispose()

释放此Java对等方持有的资源。

(继承自 Object)
Dispose(Boolean)

释放此Java对等方持有的资源。

(继承自 Object)
DisposeUnlessReferenced()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
Equals(Object)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
Format(DateTimeFormatter)

使用指定的格式化程序设置此日期时间的格式。

From(ITemporalAccessor)

从临时对象获取 ZonedDateTime 的实例。

Get(ITemporalField)

从此日期时间获取作为 int 的指定字段的值。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetLong(ITemporalField)

从此日期时间获取指定字段的值(长)。

IsSupported(ITemporalField)

检查指定的字段是否受支持。

IsSupported(ITemporalUnit)

检查指定的单位是否受支持。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Minus(Int64, ITemporalUnit)

返回此日期时间的副本,并减去指定的金额。

Minus(ITemporalAmount)

返回此日期时间的副本,并减去指定的金额。

MinusDays(Int64)

返回此 ZonedDateTime 的副本,并减去指定的天数。

MinusHours(Int64)

返回此 ZonedDateTime 的副本,并减去指定的小时数。

MinusMinutes(Int64)

返回此 ZonedDateTime 的副本,并减去指定的分钟数。

MinusMonths(Int64)

返回此 ZonedDateTime 的副本,其中包含指定的月数减去。

MinusNanos(Int64)

返回此 ZonedDateTime 的副本,并减去指定的纳秒数。

MinusSeconds(Int64)

返回此 ZonedDateTime 的副本,并减去指定的秒数。

MinusWeeks(Int64)

返回此 ZonedDateTime 的副本,该副本的指定周数减去。

MinusYears(Int64)

返回此 ZonedDateTime 的副本,并减去指定的年数。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Now()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

Now(Clock)

从指定的时钟获取当前日期时间。

Now(ZoneId)

从指定时区中的系统时钟获取当前日期时间。

Of(Int32, Int32, Int32, Int32, Int32, Int32, Int32, ZoneId)

从一年、月、日、小时、分钟、秒、纳秒和时区获取 ZonedDateTime 的实例。

Of(LocalDate, LocalTime, ZoneId)

从本地日期和时间获取 ZonedDateTime 的实例。

Of(LocalDateTime, ZoneId)

从本地日期时间获取 ZonedDateTime 的实例。

OfInstant(Instant, ZoneId)

从即时获取 ZonedDateTime 的实例。

OfInstant(LocalDateTime, ZoneOffset, ZoneId)

通过结合本地日期时间和偏移量,从形成即时获取 ZonedDateTime 的实例。

OfLocal(LocalDateTime, ZoneId, ZoneOffset)

尽可能使用首选偏移量从本地日期时间获取 ZonedDateTime 的实例。

OfStrict(LocalDateTime, ZoneOffset, ZoneId)

获取 ZonedDateTime 的实例,严格验证本地日期时间、偏移量和区域 ID 的组合。

Parse(ICharSequence, DateTimeFormatter)

使用特定格式化程序从文本字符串获取 ZonedDateTime 的实例。

Parse(ICharSequence)

从文本字符串(如 2007-12-03T10:15:30+01:00)获取 ZonedDateTime 的实例[欧洲/巴黎]。

Parse(String, DateTimeFormatter)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

Parse(String)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

Plus(Int64, ITemporalUnit)

返回此日期时间的副本,其中包含添加的指定数量。

Plus(ITemporalAmount)

返回此日期时间的副本,其中包含添加的指定数量。

PlusDays(Int64)

返回此 ZonedDateTime 的副本,并添加指定的天数。

PlusHours(Int64)

返回此 ZonedDateTime 的副本,并添加指定的小时数。

PlusMinutes(Int64)

返回此 ZonedDateTime 的副本,其中添加了指定的分钟数。

PlusMonths(Int64)

返回此 ZonedDateTime 的副本,其中添加了指定的月份数。

PlusNanos(Int64)

返回此 ZonedDateTime 的副本,并添加指定的纳秒数。

PlusSeconds(Int64)

返回此 ZonedDateTime 的副本,并添加指定的秒数。

PlusWeeks(Int64)

返回此 ZonedDateTime 的副本,并添加指定的周数。

PlusYears(Int64)

返回此 ZonedDateTime 的副本,其中添加了指定的年数。

Query(ITemporalQuery)

使用指定的查询查询此日期时间。

Range(ITemporalField)

获取指定字段的有效值范围。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
ToArray<T>()

从此Java数组包装器创建托管数组。

(继承自 Object)
ToLocalDate()

获取此日期时间的 LocalDate 部分。

ToLocalDateTime()

获取此日期时间的 LocalDateTime 部分。

ToLocalTime()

获取此日期时间的 LocalTime 部分。

ToOffsetDateTime()

将此日期时间转换为 OffsetDateTime。

ToString()

返回对象的字符串表示形式。

(继承自 Object)
TruncatedTo(ITemporalUnit)

返回此 ZonedDateTime 的副本,并截断时间。

UnregisterFromRuntime()

从互操作运行时取消注册此Java对等。

(继承自 Object)
Until(ITemporal, ITemporalUnit)

根据指定的单位计算另一个日期时间之前的时间量。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
With(ITemporalAdjuster)

返回此日期时间的调整副本。

With(ITemporalField, Int64)

返回此日期时间的副本,并将指定的字段设置为新值。

WithDayOfMonth(Int32)

返回此 ZonedDateTime 的副本,其中更改了月份日期。

WithDayOfYear(Int32)

返回此 ZonedDateTime 的副本,其中更改了一年中的日期。

WithEarlierOffsetAtOverlap()

返回此日期时间的副本,该副本将区域偏移量更改为本地时间线重叠时两个有效偏移量的前面。

WithFixedOffsetZone()

返回此日期时间的副本,其中区域 ID 设置为偏移量。

WithHour(Int32)

返回此 ZonedDateTime 的副本,并更改了一小时。

WithLaterOffsetAtOverlap()

返回此日期时间的副本,该副本将区域偏移量更改为本地时间线重叠时两个有效偏移量的后面部分。

WithMinute(Int32)

返回此 ZonedDateTime 的副本,更改分钟数。

WithMonth(Int32)

返回此 ZonedDateTime 的副本,其中更改了年月。

WithNano(Int32)

返回此 ZonedDateTime 的副本,其中更改了 nano-of-second。

WithSecond(Int32)

返回此 ZonedDateTime 的副本,其中更改了第二分钟。

WithYear(Int32)

返回此 ZonedDateTime 的副本,更改年份。

WithZoneSameInstant(ZoneId)

返回此日期时间的副本,其中包含不同的时区,并保留即时时间。

WithZoneSameLocal(ZoneId)

返回具有不同时区的此日期时间的副本,并尽可能保留本地日期时间。

显式接口实现

名称 说明
IChronoZonedDateTime.Plus(Int64, ITemporalUnit)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.ToLocalDateTime()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.With(ITemporalField, Int64)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.WithEarlierOffsetAtOverlap()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.WithLaterOffsetAtOverlap()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.WithZoneSameInstant(ZoneId)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IChronoZonedDateTime.WithZoneSameLocal(ZoneId)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

IJavaPeerable.Disposed()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.Finalized()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

(继承自 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

ISO-8601 日历系统中具有时区的日期时间,例如 2007-12-03T10:15:30+01:00 Europe/Paris

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于