android 首选项工具类,Java 8 新特新 工具类 ZonedDateTime

本文档详细介绍了如何使用Java的ZonedDateTime类处理日期时间,包括获取当前日期时间、根据时区和偏移量转换、调整日期时间字段、加减时间单位以及格式化输出。内容涵盖获取系统时区、指定时区、使用固定时区的日期时间、调整日期时间字段以及处理重叠和差距情况。此外,还涉及了如何进行日期时间的解析和格式化操作。
摘要由CSDN通过智能技术生成

方法细节

现在

从默认时区的系统时钟获取当前日期时间。

这将查询system clock默认时区以获取当前日期时间。区域和偏移量将根据时钟中的时区进行设置。

使用这种方法会阻止使用备用时钟进行测试,因为时钟是硬编码的。

返回:

当前使用系统时钟的日期时间不为空

现在

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

这将查询system clock获取当前的日期时间。指定时区避免了对默认时区的依赖。偏移量将从指定的时区计算得出。

使用这种方法会阻止使用备用时钟进行测试,因为时钟是硬编码的。

参数:

zone - 要使用的区域ID,不为null

返回:

当前使用系统时钟的日期时间不为空

现在

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

这将查询指定时钟以获取当前日期时间。区域和偏移量将根据时钟中的时区进行设置。

使用这种方法允许使用另一个时钟进行测试。备用时钟可能会使用dependency injection。

参数:

clock - 使用的时钟,不为空

返回:

当前的日期时间,不为空

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

这将尽可能地创建与输入的本地日期和时间相匹配的分区日期时间。时区规则(如夏令时)意味着并非每个本地日期时间对指定区域均有效,因此可以调整本地日期时间。

本地日期时间和第一次合并形成本地日期时间。然后,本地日期时间将在时间线上解析为一个瞬间。这是通过根据rules区域ID 所定义的本地日期时间找到UTC /格林威治的有效偏移量来实现的。

在大多数情况下,本地日期时间只有一个有效偏移量。在重叠的情况下,当时钟恢复时,有两个有效的偏移量。此方法使用通常对应于“夏季”的较早的偏移量。

在差距的情况下,当时钟向前跳转时,没有有效的偏移量。相反,将本地日期时间调整为稍后的差距。对于典型的一小时夏令时更改,本地日期时间将在一小时后移至通常对应于“夏季”的偏移量。

参数:

date - 本地日期,不为空

time - 当地时间,不为空

zone - 时区,不为空

返回:

偏移日期时间,不为空

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

这会尽可能地创建与输入本地日期时间匹配的分区日期时间。时区规则(如夏令时)意味着并非每个本地日期时间对指定区域均有效,因此可以调整本地日期时间。

本地日期时间在时间​​线上被解析为一个瞬间。这是通过根据rules区域ID 所定义的本地日期时间找到UTC /格林威治的有效偏移量来实现的。

在大多数情况下,本地日期时间只有一个有效偏移量。在重叠的情况下,当时钟恢复时,有两个有效的偏移量。此方法使用通常对应于“夏季”的较早的偏移量。

在差距的情况下,当时钟向前跳转时,没有有效的偏移量。相反,将本地日期时间调整为稍后的差距。对于典型的一小时夏令时更改,本地日期时间将在一小时后移至通常对应于“夏季”的偏移量。

参数:

localDateTime - 本地日期时间,不为空

zone - 时区,不为空

返回:

分区日期时间,不为空

公共静态  ZonedDateTime  (int年,

int月份,

int dayOfMonth,

int小时,

int分钟,

int second,

int nanoOfSecond,

ZoneId  区域)

获取ZonedDateTime年,月,日,时,分,秒,纳秒和时区的实例。

这将尽可能地创建与七个指定字段的本地日期时间相匹配的分区日期时间。时区规则(如夏令时)意味着并非每个本地日期时间对指定区域均有效,因此可以调整本地日期时间。

本地日期时间在时间​​线上被解析为一个瞬间。这是通过根据rules区域ID 所定义的本地日期时间找到UTC /格林威治的有效偏移量来实现的。

在大多数情况下,本地日期时间只有一个有效偏移量。在重叠的情况下,当时钟恢复时,有两个有效的偏移量。此方法使用通常对应于“夏季”的较早的偏移量。

在差距的情况下,当时钟向前跳转时,没有有效的偏移量。相反,将本地日期时间调整为稍后的差距。对于典型的一小时夏令时更改,本地日期时间将在一小时后移至通常对应于“夏季”的偏移量。

此方法主要用于编写测试用例。非测试代码通常会使用其他方法来创建偏移时间。 LocalDateTime有五个额外的方便变体等价的工厂方法,参数较少。这里没有提供它们来减少API的占用空间。

参数:

year - 表示从MIN_YEAR到MAX_YEAR的年份

month - 从1月(1月)到12月(12月)的月份

dayOfMonth - 从1日到31日的月份

hour - 从0到23代表每小时的时间

minute - 从0到59代表分钟的小时数

second - 从0到59代表第二个分钟

nanoOfSecond - 从0到999,999,999代表纳秒级

zone - 时区,不为空

返回:

偏移日期时间,不为空

抛出:

ofLocal

公共静态  ZonedDateTime  ofLocal(LocalDateTime  localDateTime,

ZoneId  区域,

ZoneOffset  preferredOffset)

ZonedDateTime如果可能,使用偏好的偏移量从本地日期时间获取实例。

本地日期时间在时间​​线上被解析为一个瞬间。这是通过根据rules区域ID 所定义的本地日期时间找到UTC /格林威治的有效偏移量来实现的。

在大多数情况下,本地日期时间只有一个有效偏移量。在时钟重新设置的情况下,有两个有效的偏移量。如果首选偏移量是有效偏移量之一,则使用它。否则使用较早的有效偏移量,通常对应于“夏季”。

在时钟向前跳转的情况下,没有有效的偏移量。相反,将本地日期时间调整为稍后的差距。对于典型的一小时夏令时更改,本地日期时间将在一小时后移至通常对应于“夏季”的偏移量。

参数:

localDateTime - 本地日期时间,不为空

zone - 时区,不为空

preferredOffset - 区域偏移量,如果没有首选项,则为null

返回:

分区日期时间,不为空

ofInstant

ZonedDateTime从一个实例中获得一个实例Instant。

这将创建一个与指定时间相同的分区日期时间。呼叫ChronoZonedDateTime.toInstant()将返回与此处使用的相同的时刻。

将瞬间转换为分区日期时间非常简单,因为每个时刻只有一个有效偏移量。

参数:

instant - 从非null创建日期时间的时刻

zone - 时区,不为空

返回:

分区日期时间,不为空

抛出:

ofInstant

ZonedDateTime从组合本地日期时间和偏移量所获得的瞬间获得一个实例。

这将创建一个分区的日期时间combining 的LocalDateTime和ZoneOffset。这种组合唯一地指定了一个没有歧义的时刻。

将瞬间转换为分区日期时间非常简单,因为每个时刻只有一个有效偏移量。如果有效偏移量与指定偏移量不同,则划分日期时间的日期时间和偏移量将与指定的不同。

如果ZoneId要使用的是a ZoneOffset,则此方法等同于of(LocalDateTime, ZoneId)。

参数:

localDateTime - 本地日期时间,不为空

offset - 区域偏移量,不为空

zone - 时区,不为空

返回:

分区日期时间,不为空

ofStrict

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

这会根据指定区域的规则创建分区日期时间,以确保偏移对本地日期时间有效。如果偏移量无效,则抛出异常。

参数:

localDateTime - 本地日期时间,不为空

offset - 区域偏移量,不为空

zone - 时区,不为空

返回:

分区日期时间,不为空

ZonedDateTime从一个时间对象中获得一个实例。

这将根据指定的时间获取分区日期时间。A TemporalAccessor表示一组任意的日期和时间信息,该工厂将其转换为一个实例ZonedDateTime。

该转换将首先ZoneId从时间对象中获得一个,ZoneOffset如果需要的话,将转换回来。然后它会尝试获得一个Instant,LocalDateTime如果有必要的话,会回落。结果将是ZoneId或ZoneOffset与Instant或的组合LocalDateTime。允许实现执行优化,例如访问与相关对象等效的那些字段。

该方法匹配功能接口的签名,TemporalQuery 允许通过方法引用将其用作查询ZonedDateTime::from。

解析

ZonedDateTime从文本字符串中获得一个实例,如 2007-12-03T10:15:30+01:00[Europe/Paris]。

参数:

text - 要解析的文本,例如“2007-12-03T10:15:30 + 01:00 [Europe / Paris]”,not null

返回:

解析后的分区日期时间不为空

抛出:

解析

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

文本使用格式化程序进行分析,返回日期时间。

参数:

text - 要解析的文本,不为空

formatter - 要使用的格式化程序,不为null

返回:

解析后的分区日期时间不为空

抛出:

则isSupported

public boolean isSupported(TemporalField  field)

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

这将检查是否可以查询指定字段的日期时间。如果是假,然后调用range, get并且with(TemporalField, long) 方法会抛出异常。

如果该字段是a,ChronoField则在此处执行查询。支持的字段是:

NANO_OF_SECOND

NANO_OF_DAY

MICRO_OF_SECOND

MICRO_OF_DAY

MILLI_OF_SECOND

MILLI_OF_DAY

SECOND_OF_MINUTE

SECOND_OF_DAY

MINUTE_OF_HOUR

MINUTE_OF_DAY

HOUR_OF_AMPM

CLOCK_HOUR_OF_AMPM

HOUR_OF_DAY

CLOCK_HOUR_OF_DAY

AMPM_OF_DAY

DAY_OF_WEEK

ALIGNED_DAY_OF_WEEK_IN_MONTH

ALIGNED_DAY_OF_WEEK_IN_YEAR

DAY_OF_MONTH

DAY_OF_YEAR

EPOCH_DAY

ALIGNED_WEEK_OF_MONTH

ALIGNED_WEEK_OF_YEAR

MONTH_OF_YEAR

PROLEPTIC_MONTH

YEAR_OF_ERA

YEAR

ERA

INSTANT_SECONDS

OFFSET_SECONDS

所有其他ChronoField实例将返回false。

如果该字段不是a ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor) 传递this作为参数来获得此方法的结果。该领域是否得到支持取决于该领域。

指定者:

指定者:

参数:

field - 要检查的字段,null返回false

返回:

如果此日期时间支持此字段,则为true,否则为false

则isSupported

public boolean isSupported(TemporalUnit  unit)

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

这将检查指定的单位是否可以添加到此日期或从中减去。如果为false,则调用plus(long, TemporalUnit)and minus方法将抛出异常。

如果单位是一个,ChronoUnit那么在这里执行查询。支持的单位是:

NANOS

MICROS

MILLIS

SECONDS

MINUTES

HOURS

HALF_DAYS

DAYS

WEEKS

MONTHS

YEARS

DECADES

CENTURIES

MILLENNIA

ERAS

所有其他ChronoUnit实例将返回false。

如果单位不是a ChronoUnit,则通过调用TemporalUnit.isSupportedBy(Temporal) 传递this作为参数来获得此方法的结果。单位是否受支持取决于单位。

指定者:

指定者:

参数:

unit - 要检查的单位,null返回false

返回:

如果可以添加/减去单位,则返回true,否则返回false

范围

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

范围对象表示字段的最小和最大有效值。此日期时间用于增强返回范围的准确性。如果无法返回范围,由于该字段不受支持或出于某种其他原因,会引发异常。

如果该字段是a,ChronoField则在此处执行查询。该supported fields将返回适当的范围实例。所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。

如果该字段不是a ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor) 传递this作为参数来获得此方法的结果。范围是否可以取得是由现场决定的。

得到

public int get(TemporalField  field)

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

这会查询此日期时间以获取指定字段的值。返回值将始终在该字段的有效值范围内。如果无法返回该值,因为该字段不受支持或出于某种其他原因,会引发异常。

如果该字段是a,ChronoField则在此处执行查询。该supported fields会返回基于此日期时间有效值,除了NANO_OF_DAY,MICRO_OF_DAY, EPOCH_DAY,PROLEPTIC_MONTH和INSTANT_SECONDS它是太大,无法在int和抛出DateTimeException。所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。

如果该字段不是a ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor) 传递this作为参数来获得此方法的结果。该值是否可以获得,以及该值代表什么,由该领域决定。

getLong

public long getLong(TemporalField  字段)

从该日期时间获取指定字段的值作为a long。

这会查询此日期时间以获取指定字段的值。如果无法返回该值,因为该字段不受支持或出于某种其他原因,会引发异常。

如果该字段是a,ChronoField则在此处执行查询。该supported fields会根据此日期时间返回有效值。所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。

如果该字段不是a ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor) 传递this作为参数来获得此方法的结果。该值是否可以获得,以及该值代表什么,由该领域决定。

的getOffset

public  ZoneOffset  getOffset()

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

这是UTC /格林威治当地日期时间的偏移量。

withEarlierOffsetAtOverlap

public  ZonedDateTime  withEarlierOffsetAtOverlap()

返回此日期时间的副本,将区域偏移更改为本地时间线重叠处的两个有效偏移中较早的一个。

当本地时间线重叠时,例如在秋季夏令时切换时,此方法仅具有任何效果。在这种情况下,本地日期时间有两个有效的偏移量。调用此方法将返回一个分区日期时间与选定的两个中较早的时间。

如果此方法在不重叠时被调用,this 则返回。

这个实例是不可变的,不受此方法调用的影响。

withLaterOffsetAtOverlap

公共  ZonedDateTime  withLaterOffsetAtOverlap()

返回此日期时间的副本,将区域偏移更改为在本地时间线重叠处的两个有效偏移中较晚的一个。

当本地时间线重叠时,例如在秋季夏令时切换时,此方法仅具有任何效果。在这种情况下,本地日期时间有两个有效的偏移量。调用此方法将返回一个分区日期时间与所选两个中的后一个。

如果此方法在不重叠时被调用,this 则返回。

这个实例是不可变的,不受此方法调用的影响。

getZone

public  ZoneId  getZone()

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

这将返回区域ID。这确定了rules 确定何时以及如何与UTC /格林威治的偏差发生变化的时区。

区域ID可能与偏移相同。如果这是真的,则任何未来的计算(例如加法或减法)都不会由于时区规则而导致复杂的边缘情况。另见withFixedOffsetZone()。

withZoneSameLocal

公共  ZonedDateTime  withZoneSameLocal(ZoneId  区域)

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

此方法更改时区并保留本地日期时间。只有当本地日期时间对新区域无效时才会更改,使用与之相同的方法确定 ofLocal(LocalDateTime, ZoneId, ZoneOffset)。

这个实例是不可变的,不受此方法调用的影响。

指定者:

参数:

zone - 要更改为的时区,而不是空

返回:

一个ZonedDateTime基于这个日期时间与请求的区域,不为空

withZoneSameInstant

公共  ZonedDateTime  withZoneSameInstant(ZoneId  区域)

使用不同的时区返回此日期时间的副本,并保留此时刻。

此方法更改时区并保留时间。这通常会导致当地日期时间的更改。

此方法基于保留相同的时刻,因此本地时间线中的间隙和重叠对结果没有影响。

指定者:

参数:

zone - 要更改为的时区,而不是空

返回:

一个ZonedDateTime基于这个日期时间与请求的区域,不为空

抛出:

withFixedOffsetZone

public  ZonedDateTime  withFixedOffsetZone()

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

这会返回区域ID与区域ID相同的区域日期时间getOffset()。结果的本地日期时间,偏移量和瞬间将与此日期时间相同。

将日期时间设置为固定的单个偏移量意味着未来的任何计算(例如加法或减法)都不会因时区规则而导致复杂的边缘情况。由于大多数协议(如ISO-8601)仅处理偏移量,而不是基于区域的区域ID,因此在通过网络发送分区日期时间时可能也很有用。

这相当于ZonedDateTime.of(zdt.toLocalDateTime(), zdt.getOffset())。

返回:

a ZonedDateTime区域ID设置为偏移量,不为空

toLocalDateTime

public  LocalDateTime  toLocalDateTime()

获取LocalDateTime这个日期时间的一部分。

这会返回LocalDateTime与此日期时间相同的年份,月份,日期和时间。

toLocalDate

public  LocalDate  toLocalDate()

获取LocalDate这个日期时间的一部分。

这会返回LocalDate与此日期时间相同的年份,月份和日期。

得到年

public int getYear()

获取年份字段。

此方法返回int年份的原始值。

这种方法返回的年份是按照每种方式预测的get(YEAR)。要获得年代,请使用get(YEAR_OF_ERA)。

返回:

年份,从MIN_YEAR到MAX_YEAR

getMonthValue

public int getMonthValue()

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

此方法返回int1到12 的月份。如果Month 通过调用使用枚举,则应用程序代码通常会更清晰getMonth()。

返回:

从1到12的月份

也可以看看:

得到月

public  Month  getMonth()

获取使用Month枚举的月份字段。

此方法返回Month该月的枚举。这避免了对于什么int值意味着混淆。如果你需要访问原始int值,那么枚举提供int value。

返回:

一年的月份,不是空的

也可以看看:

getDayOfMonth

public int getDayOfMonth()

获取日期字段。

此方法返回int月份的原始值。

返回:

从1日到31日的月份

getDayOfYear

public int getDayOfYear()

获得一年中的一个领域。

此方法返回int一年中的原始值。

返回:

在闰年中从1到365或366

getDayOfWeek

public  DayOfWeek  getDayOfWeek()

获取星期几字段,这是一个枚举DayOfWeek。

此方法返回DayOfWeek星期几的枚举。这避免了对于什么int值意味着混淆。如果你需要访问原始int值,那么枚举提供int value。

其他信息可以从中获得DayOfWeek。这包括值的文本名称。

返回:

星期几,非空

toLocalTime

公共  本地时间  toLocalTime()

获取LocalTime这个日期时间的一部分。

这会返回LocalTime与此日期时间相同的小时,分​​钟,秒和纳秒。

getHour

public int getHour()

获取一天中的时间字段。

返回:

一天中的时间从0到23

getMinute

public int getMinute()

获取分钟的字段。

返回:

小时,从0到59

getSecond

public int getSecond()

获取第二分钟的字段。

返回:

第二分钟,从0到59

getNano

public int getNano()

获取纳秒级字段。

返回:

纳秒级,从0到999,999,999

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

ZonedDateTime基于 这个返回一个日期 - 时间调整。调整使用指定的调整策略对象进行。阅读调节器的文档以了解将做出什么调整。

一个简单的调节器可以简单地设置其中一个字段,例如年份字段。一个更复杂的调整者可能会将该日期设置为该月的最后一天。提供了一些常用调整 TemporalAdjusters。这些包括找到“每月的最后一天”和“下周三”。关键日期 - 时间类还实现了TemporalAdjuster接口,如Month和MonthDay。调解员负责处理特殊情况,例如月份和闰年的变化长度。

例如,这段代码在7月的最后一天返回一个日期:

import static java.time.Month。*;

import static java.time.temporal.TemporalAdjusters。*;

result = zonedDateTime.with(JULY).with(lastDayOfMonth());

类LocalDate和LocalTime实现TemporalAdjuster,因此这个方法可以用来更改日期,时间或偏移:

result = zonedDateTime.with(date);

result = zonedDateTime.with(time);

ZoneOffset也实现,TemporalAdjuster但是使用它作为参数通常没有效果。a的偏移ZonedDateTime主要由时区控制。因此,更改偏移量通常并不合理,因为本地日期时间和区域只有一个有效偏移量。如果分区日期时间处于夏时制重叠状态,则使用该偏移量在两个有效偏移量之间切换。在所有其他情况下,偏移量将被忽略。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

adjuster - 使用的调整器,不为null

返回:

一个ZonedDateTime基于this与制造,不为空调整

抛出:

公共  ZonedDateTime  与(TemporalField  字段,

长的newValue)

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

这将返回一个ZonedDateTime基于此值的指定字段的值已更改。这可用于更改任何支持的字段,例如年,月或日期。如果无法设置该值,因为该字段不受支持或出于其他原因,将引发异常。

在某些情况下,更改指定的字段会导致生成的日期时间失效,例如将月份从1月31日更改为2月份会使月份的日期无效。在这种情况下,该字段负责解决日期。通常它会选择以前的有效日期,这将是本示例中2月份的最后一个有效日期。

如果该字段是a,ChronoField则在此执行调整。

该INSTANT_SECONDS字段将返回具有指定时间的日期时间。该区和纳秒级不变。结果将有一个从新的瞬间和原始区域派生的偏移量。如果新的瞬时值超出有效范围,DateTimeException则会抛出a。

该OFFSET_SECONDS字段通常会被忽略。a的偏移ZonedDateTime主要由时区控制。因此,更改偏移量通常并不合理,因为本地日期时间和区域只有一个有效偏移量。如果分区日期时间处于夏时制重叠状态,则使用该偏移量在两个有效偏移量之间切换。在所有其他情况下,偏移量将被忽略。如果新的偏移值超出有效范围,DateTimeException则会抛出a。

另一个supported fields将按照上的匹配方法行事LocalDateTime。该区域不是计算的一部分,将保持不变。在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。

如果该字段不是a ChronoField,则通过调用TemporalField.adjustInto(Temporal, long) 传递this作为参数来获得此方法的结果。在这种情况下,该字段确定是否以及如何调整时刻。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

field - 在结果中设置的字段不为空

newValue - 结果中字段的新值

返回:

一个ZonedDateTime基于this使用指定的字段设置,不为空

抛出:

withYear

public  ZonedDateTime  withYear(int year)

ZonedDateTime在修改年份后返回此副本。

这在本地时间线上运行, changing the year当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

year - 结果中设置的年份,从MIN_YEAR到MAX_YEAR

返回:

一个ZonedDateTime基于这个日期时间与请求的一年,不为空

抛出:

withMonth

public  ZonedDateTime  withMonth(int month)

返回此ZonedDateTime年份的复制件。

这在本地时间线上运行, changing the month当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

month - 从1月(1月)到12月(12月)的结果中设定的月份

返回:

一个ZonedDateTime基于这个日期时间与请求的一个月,不为空

抛出:

withDayOfMonth

public  ZonedDateTime  withDayOfMonth(int dayOfMonth)

ZonedDateTime在月份改变的情况下返回此副本。

这在本地时间线上运行, changing the day-of-month当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

dayOfMonth - 结果中的月份日期,从1到28-31

返回:

一个ZonedDateTime基于这个日期时间与请求的天,不为空

抛出:

withDayOfYear

public  ZonedDateTime  withDayOfYear(int dayOfYear)

返回此ZonedDateTime日期的副本,并更改日期。

这在本地时间线上运行, changing the day-of-year当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

dayOfYear - 从1到365-366之间的结果中设置的日期

返回:

一个ZonedDateTime基于此日期与所请求的天,不为空

抛出:

withHour

public  ZonedDateTime  withHour(int hour)

ZonedDateTime按每天的小时数更改返回此副本。

这在当地时间线上运行, 改变当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

hour - 从0到23的结果中设置的小时数

返回:

一个ZonedDateTime基于这个日期时间与请求小时,不为空

抛出:

withMinute

public  ZonedDateTime  withMinute(int minute)

ZonedDateTime按小时分钟更改返回此副本。

这在当地时间线上运行, 改变当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

minute - 从0到59的结果中设置的分钟数

返回:

一个ZonedDateTime基于这个日期时间与请求分钟,不为空

抛出:

withSecond

public  ZonedDateTime  withSecond(int second)

ZonedDateTime在第二分钟更改后返回此副本。

这在当地时间线上运行, 改变当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

second - 第二分钟设置结果,从0到59

返回:

一个ZonedDateTime基于这个日期时间与请求第二,不为空

抛出:

withNano

public  ZonedDateTime  withNano(int nanoOfSecond)

ZonedDateTime使用纳秒改变来返回此副本。

这在当地时间线上运行, 改变当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

nanoOfSecond - 在结果中设置的纳秒级,从0到999,999,999

返回:

一个ZonedDateTime基于这个日期时间与请求纳秒,不为空

抛出:

truncatedTo

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

截断返回原始日期时间的副本,其字段小于指定的单位,设置为零。例如,用minutes单位截断将把秒钟和纳秒级的字段设置为零。

该单位必须有一个持续时间 ,分为标准日的长度而没有剩余时间。这包括所有提供的时间单位ChronoUnit和 DAYS。其他单位抛出异常。

这在当地时间线上执行, truncating 即当地的日期 - 时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

unit - 要截断的单位,不为null

返回:

一个ZonedDateTime基于此日期,时间与时间截断,不为空

抛出:

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

这将返回一个ZonedDateTime基于此值的已添加的指定数量。金额通常Period或Duration可能是实现TemporalAmount接口的任何其他类型。

计算通过调用委托给金额对象 TemporalAmount.addTo(Temporal)。数量实现可以以任何希望的方式自由实现添加,但通常会回调plus(long, TemporalUnit)。请查阅金额实施文件以确定是否可以成功添加。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

amountToAdd - 要添加的金额,不为空

返回:

一个ZonedDateTime基于这个日期和时间的添加,不是null

抛出:

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

ZonedDateTime基于 此,返回一个以所添加单位为单位的金额。如果无法添加金额,由于该单位不受支持或出于其他原因,会引发异常。

如果字段是a,ChronoUnit那么在这里实现添加。该区域不是计算的一部分,在结果中将保持不变。日期和时间单位的计算有所不同。

日期单位在当地时间线上运行。该时间段首先添加到本地日期时间,然后使用区域ID转换回划分的日期时间。该转换ofLocal(LocalDateTime, ZoneId, ZoneOffset) 在添加之前与偏移一起使用。

时间单位在即时时间线上运行。该时间段首先添加到本地日期时间,然后使用区域ID转换回划分的日期时间。该转换ofInstant(LocalDateTime, ZoneOffset, ZoneId) 在添加之前与偏移一起使用。

如果该字段不是a ChronoUnit,则通过调用TemporalUnit.addTo(Temporal, long) 传递this作为参数来获得此方法的结果。在这种情况下,本机将确定是否以及如何执行添加。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

amountToAdd - 要添加到结果中的单位数量可能为负数

unit - 要添加的金额单位,不为空

返回:

一个ZonedDateTime基于此日期,时间与规定的添加量,没有空

抛出:

plusYears

返回ZonedDateTime指定年份的副本。

这在当地时间线上运行 adding years到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

years - 增加的年份可能是负面的

返回:

一个ZonedDateTime基于与年增加,不为空这个日期时间

抛出:

plusMonths

公共  ZonedDateTime  plusMonths(长月)

ZonedDateTime以指定的月数返回此副本。

这在当地时间线上运行 adding months到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

months - 增加的几个月可能是负面的

返回:

一个ZonedDateTime基于与几个月增加,不为空这个日期时间

抛出:

plusWeeks

公共  ZonedDateTime  plusWeeks(长周)

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

这在当地时间线上运行 adding weeks到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

weeks - 增加的几周可能是负面的

返回:

一个ZonedDateTime基于与周增加,不为空这个日期时间

抛出:

plusDays

公共  ZonedDateTime  plusDays(长天)

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

这在当地时间线上运行 adding days到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

days - 增加的日子可能是消极的

返回:

一个ZonedDateTime基于这个日期和时间添加的日子,不是空的

抛出:

plusHours

公共  ZonedDateTime  plusHours(长时间)

ZonedDateTime以指定的小时数返回此副本。

这在现时的时间线上运行,使得增加一个小时将总是一小时后的持续时间。这可能导致本地日期 - 时间改变不是一个小时。请注意,这是与日,月和年使用的方法不同的方法,因此添加一天与添加24小时不同。

例如,考虑春季DST切换意味着当地时间01:00至01:59发生两次从偏移量+02:00变为+01:00的时区。

在00:30 + 02:00加1小时将导致01:30 + 02:00

在01:30 + 02:00加1小时将导致01:30 + 01:00

将1小时加入01:30 + 01:00将导致02:30 + 01:00

在00:30 + 02:00加上三个小时将导致02:30 + 01:00

这个实例是不可变的,不受此方法调用的影响。

参数:

hours - 要添加的时间可能是负面的

返回:

一个ZonedDateTime基于这个日期和时间添加的时间,不是null

抛出:

plusMinutes

公共  ZonedDateTime  plusMinutes(长时间)

ZonedDateTime以指定的分钟数添加返回此副本。

这在即时时间线上运行,使得增加一分钟将总是一分钟后的持续时间。这可能会导致本地日期时间改变一分钟以外的金额。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

minutes - 要添加的分钟数可能是负数

返回:

一个ZonedDateTime基于与分钟内添加,不为空这个日期时间

抛出:

plusSeconds

公共  ZonedDateTime  plusSeconds(长秒)

ZonedDateTime以指定的秒数返回此副本。

这在当前的时间线上运行,使得增加一秒将总是一秒钟的持续时间。这可能导致本地日期 - 时间改变一秒以外的量。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

seconds - 添加的秒数可能是负值

返回:

一个ZonedDateTime基于与秒添加,不为空这个日期时间

抛出:

plusNanos

公共  ZonedDateTime  plusNanos(长纳米)

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

这是在即时时间线上运行的,因此添加一个纳米将始终是一纳米之后的持续时间。这可能会导致本地日期时间改变一个纳米以外的量。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

nanos - 纳米添加,可能是负面的

返回:

一个ZonedDateTime基于与纳秒增加,不为空这个日期时间

抛出:

减去

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

这将返回一个ZonedDateTime基于此值的指定金额减去。金额通常Period或Duration可能是实现TemporalAmount接口的任何其他类型。

计算通过调用委托给金额对象 TemporalAmount.subtractFrom(Temporal)。数量实现可以自由地以任何希望的方式实现减法,但通常会调回minus(long, TemporalUnit)。请查阅金额实施文件以确定是否可以成功扣除。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

amountToSubtract - 减去的金额,不为空

返回:

一个ZonedDateTime基于这个日期 - 时间的减法,不是null

抛出:

减去

public  ZonedDateTime  减去(long amountToSubtract,

TemporalUnit  单位)

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

这将ZonedDateTime基于这个返回一个减去单位的金额。如果无法减去金额,由于该单位不受支持或出于其他原因,会引发异常。

日期和时间单位的计算有所不同。

日期单位在当地时间线上运行。首先从本地日期时间中减去该时间段,然后使用区域ID将其转换回分区日期时间。转换使用ofLocal(LocalDateTime, ZoneId, ZoneOffset) 减法之前的偏移量。

时间单位在即时时间线上运行。首先从本地日期时间中减去该时间段,然后使用区域ID将其转换回分区日期时间。转换使用ofInstant(LocalDateTime, ZoneOffset, ZoneId) 减法之前的偏移量。

这种方法相当于plus(long, TemporalUnit)取消金额。请参阅该方法以获取加法和减法如何工作的完整说明。

这个实例是不可变的,不受此方法调用的影响。

指定者:

指定者:

参数:

amountToSubtract - 从结果中减去单位的数量,可能是负数

unit - 要减去的金额单位,不为空

返回:

一个ZonedDateTime基于这个日期时间与指定的金额中扣除,不为空

抛出:

minusYears

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

这在当地时间线上运行 subtracting years到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

years - 减去的年份可能是负值

返回:

一个ZonedDateTime基于这个日期时间随着年龄的增长减去,不为空

抛出:

minusMonths

公共  ZonedDateTime  minusMonths(长月)

以ZonedDateTime减去指定的月数返回此副本。

这在当地时间线上运行 subtracting months到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

months - 减去的月份可能是负值

返回:

一个ZonedDateTime基于此日期,时间与月相减,不为空

抛出:

minusWeeks

公共  ZonedDateTime  minusWeeks(长周)

ZonedDateTime以指定的星期数减去返回此副本。

这在当地时间线上运行 subtracting weeks到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

weeks - 减去的周数可能是负值

返回:

一个ZonedDateTime基于此日期,时间与周中减去,不为空

抛出:

minusDays

公共  ZonedDateTime  minusDays(长天)

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

这在当地时间线上运行 subtracting days到当地日期时间。然后将其转换回a ZonedDateTime,使用区域ID获取偏移量。

在转换回时ZonedDateTime,如果本地日期时间处于重叠状态,则可能时将保留偏移量,否则将使用较早的偏移量。如果在差距中,本地日期时间将按差距的长度向前调整。

这个实例是不可变的,不受此方法调用的影响。

参数:

days - 减去的日子可能是负面的

返回:

一个ZonedDateTime基于此日期,时间与天相减,不为空

抛出:

minusHours

公共  ZonedDateTime  minusHours(长时间)

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

这在即时时间线上运行,使得减去一小时将总是一小时前的持续时间。这可能导致本地日期 - 时间改变不是一个小时。请注意,这是与日,月和年使用的方法不同的方法,因此扣除一天不等于增加24小时。

例如,考虑春季DST切换意味着当地时间01:00至01:59发生两次从偏移量+02:00变为+01:00的时区。

从02:30 + 01:00减去1小时将导致01:30 + 02:00

从01:30 + 01:00减去1小时将导致01:30 + 02:00

从01:30 + 02:00减去1小时将导致00:30 + 01:00

从02:30 + 01:00减去3小时将导致00:30 + 02:00

这个实例是不可变的,不受此方法调用的影响。

参数:

hours - 减去的时间可能是负的

返回:

一个ZonedDateTime基于这个日期时间中减去,而不是空的时间

抛出:

minusMinutes

公共  ZonedDateTime  minus分钟(长分钟)

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

这在即时时间线上运行,使得减去一分钟总是一分钟前的持续时间。这可能会导致本地日期时间改变一分钟以外的金额。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

minutes - 减去的分钟数可能是负数

返回:

一个ZonedDateTime基于此日期,时间与分钟减去,不为空

抛出:

minusSeconds

公共  ZonedDateTime  minusSeconds(长秒)

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

这是在即时时间线上运行的,因此减去一秒将始终是一秒的持续时间。这可能导致本地日期 - 时间改变一秒以外的量。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

seconds - 减去的秒数可能为负数

返回:

一个ZonedDateTime基于此日期,时间与秒中减去,不为空

抛出:

minusNanos

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

这在当前的时间线上运行,使得减去一个纳米将始终是一个纳米早的持续时间。这可能会导致本地日期时间改变一个纳米以外的量。请注意,这是与日,月和年使用的方法不同的方法。

这个实例是不可变的,不受此方法调用的影响。

参数:

nanos - 纳米减去,可能是负面的

返回:

一个ZonedDateTime基于此日期,时间与纳秒扣除,不为空

抛出:

询问

public R R query(TemporalQuery 查询)

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

这使用指定的查询策略对象查询此日期时间。该TemporalQuery对象定义了用于获取结果的逻辑。阅读查询文档以了解此方法的结果。

指定者:

指定者:

类型参数:

R - 结果的类型

参数:

query - 要调用的查询,不为null

返回:

查询结果可能返回null(由查询定义)

抛出:

直到

公众长期以来(Temporal  endExclusive,

TemporalUnit  单位)

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

这将根据ZonedDateTime 单个计算两个对象之间的时间量TemporalUnit。开始点和结束点是this指定的日期时间。如果结束在开始之前,结果将为负值。例如,可以使用计算两个日期时间之间的天数startDateTime.until(endDateTime, DAYS)。

将Temporal传递给此方法被转换为 ZonedDateTime使用from(TemporalAccessor)。如果两个区划日期时间不同,指定的结束日期时间将被标准化为具有与此日期时间相同的区域。

该计算返回一个整数,表示两个日期时间之间完整单位的数量。例如,2012-06-15T00:00Z和2012-08-14T23:59Z之间的月数将仅为一个月,因为这是两个月的一分钟。

//这两行是相同的

amount = start.until(end,MONTHS);

金额= MONTHS.between之间(开始,结束);

应该根据哪个选项使代码更具可读性。

该计算在此方法中实现ChronoUnit。单位NANOS,MICROS,MILLIS,SECONDS, MINUTES,HOURS和HALF_DAYS,DAYS, WEEKS,MONTHS,YEARS,DECADES, CENTURIES,MILLENNIA和ERAS支持。其他ChronoUnit值将引发异常。

日期和时间单位的计算有所不同。

日期单位使用当地日期时间在当地时间线上运行。例如,从第1天中午到第二天中午(以天为单位)的时间段总是计为一天,而不管是否存在夏令时变化。

时间单位在即时时间线上运行。该计算有效地将分区日期时间转换为时刻,然后计算时刻之间的时段。例如,取决于是否存在日光节约变化,从第1天中午到第二天中午的时间可以是23,24或25小时(或其他量)。

如果单位不是a ChronoUnit,则此方法的结果是通过调用作为第一个参数的TemporalUnit.between(Temporal, Temporal) 传递this和作为第二个参数调用转换后的输入temporal来获得的。

这个实例是不可变的,不受此方法调用的影响。

指定者:

参数:

endExclusive- 结束日期,排他,转换为ZonedDateTime,不为空

unit - 测量金额的单位,不为零

返回:

该日期时间与结束日期之间的时间量

抛出:

ZonedDateTime

格式

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

这个日期时间将被传递给格式化程序以产生一个字符串。

指定者:

参数:

formatter - 要使用的格式化程序,不为null

返回:

格式化的日期时间字符串,不为空

抛出:

toOffsetDateTime

public  OffsetDateTime  toOffsetDateTime()

将此日期时间转换为OffsetDateTime。

这会使用本地日期时间和偏移量创建偏移日期时间。区域ID被忽略。

返回:

表示相同的本地日期时间和偏移量的偏移日期时间,不为空

等于

public boolean equals(Object  obj)

检查这个日期时间是否等于另一个日期时间。

该比较基于偏移日期时间和区域。只有类型的对象ZonedDateTime被比较,其他类型返回false。

指定者:

覆盖:

参数:

obj - 要检查的对象,null返回false

返回:

如果这与其他日期时间相同,则为true

也可以看看:

public  String  toString()

将此日期时间输出为a String,例如 2007-12-03T10:15:30+01:00[Europe/Paris]。

格式由LocalDateTime后面的ZoneOffset。如果与ZoneId偏移量不相同,则输出ID。如果偏移量和ID相同,则输出与ISO-8601兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值