为什么 java.time.Clock 有区域信息?
Why does the java.time.Clock has zone information?
为什么java.time.Clock
有区域信息?在时钟中,您只能在调用 instant()
方法时获得 Instant
- 这是没有时区信息的时间。
是让时钟中的区域可用的唯一目的,例如像这样创建一个 ZonedDateTime?
ZonedDateTime.ofInstant(clock().instant(), clock().getZone())
那么在时钟 class 中使用一个方法 zonedDateTime()
不是很有意义吗?
备用时钟行为
引用 Clock
文档(强调我的):
Use of a Clock is optional. All key date-time classes also have a now() factory method that uses the system clock in the default time zone. The primary purpose of this abstraction is to allow alternate clocks to be plugged in as and when required. Applications use an object to obtain the current time rather than a static method. This can simplify testing.
例如,Clock.fixed( Instant fixedInstant, ZoneId zone )
始终将当前时刻报告为特定时刻,即固定(不变)的时间点。
我想回答您的问题需要一些读心术或猜测,但无论如何让我试一试。据我所知,在使用带有 Clock
参数的任何 now
方法时,知道时区的 Clock
非常方便。如果 Clock
无法提供时区,则以下方法中的 None 可以正常工作:
LocalDate.now(Clock)
LocalDateTime.now(Clock)
LocalTime.now(Clock)
MonthDay.now(Clock)
OffsetDateTime.now(Clock)
OffsetTime.now(Clock)
Year.now(Clock)
YearMonth.now(Clock)
ZonedDateTime.now(Clock)
HijrahDate.now(Clock)
JapaneseDate.now(Clock)
MinguoDate.now(Clock)
ThaiBuddhistDate.now(Clock)
列表可能不完整。只有Instant.now(Clock)
不需要时区,忽略Clock
.
的时区
是的,Clock
有一个 zonedDateTime
方法提供与 ZonedDateTime.now(Clock)
相同结果的替代设计也很有意义。但是:有人想要开发 JewishDate
class 永远无法将 jewishDate
方法插入到 Clock
class 中。使用现有设计,他们可以按照与现有日期和时间 classes 完全相同的方式设计 JewishDate
class,包括 JewishDate.now(Clock)
方法。
为什么java.time.Clock
有区域信息?在时钟中,您只能在调用 instant()
方法时获得 Instant
- 这是没有时区信息的时间。
是让时钟中的区域可用的唯一目的,例如像这样创建一个 ZonedDateTime?
ZonedDateTime.ofInstant(clock().instant(), clock().getZone())
那么在时钟 class 中使用一个方法 zonedDateTime()
不是很有意义吗?
备用时钟行为
引用 Clock
文档(强调我的):
Use of a Clock is optional. All key date-time classes also have a now() factory method that uses the system clock in the default time zone. The primary purpose of this abstraction is to allow alternate clocks to be plugged in as and when required. Applications use an object to obtain the current time rather than a static method. This can simplify testing.
例如,Clock.fixed( Instant fixedInstant, ZoneId zone )
始终将当前时刻报告为特定时刻,即固定(不变)的时间点。
我想回答您的问题需要一些读心术或猜测,但无论如何让我试一试。据我所知,在使用带有 Clock
参数的任何 now
方法时,知道时区的 Clock
非常方便。如果 Clock
无法提供时区,则以下方法中的 None 可以正常工作:
LocalDate.now(Clock)
LocalDateTime.now(Clock)
LocalTime.now(Clock)
MonthDay.now(Clock)
OffsetDateTime.now(Clock)
OffsetTime.now(Clock)
Year.now(Clock)
YearMonth.now(Clock)
ZonedDateTime.now(Clock)
HijrahDate.now(Clock)
JapaneseDate.now(Clock)
MinguoDate.now(Clock)
ThaiBuddhistDate.now(Clock)
列表可能不完整。只有Instant.now(Clock)
不需要时区,忽略Clock
.
是的,Clock
有一个 zonedDateTime
方法提供与 ZonedDateTime.now(Clock)
相同结果的替代设计也很有意义。但是:有人想要开发 JewishDate
class 永远无法将 jewishDate
方法插入到 Clock
class 中。使用现有设计,他们可以按照与现有日期和时间 classes 完全相同的方式设计 JewishDate
class,包括 JewishDate.now(Clock)
方法。