- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在看 Clock来自java的类,以便我可以将其作为依赖项注入(inject)以获得更好的可测试性。但是我不明白这两种方法的区别systemUTC
和 systemDefaultZone
. Instant.now()
似乎在内部使用 systemUTC
时钟而 YearMonth.now()
使用 systemDefaultZone
钟。我已经阅读了 javadoc,但对我来说不是很清楚。
我有使用 Instant.now()
的代码和 YearMonth.now()
并想通过一些示例来了解两个时钟之间的区别,其中错误地使用每个时钟可能会导致问题。
最佳答案
就instant
而言Clock.systemUTC
返回的两个时钟的方法和 Clock.systemDefaultZone
,他们会做同样的事情。他们的两个文档都说时钟“基于最佳可用系统时钟”。所以创建 Instant
s 使用时钟将始终为您提供相同的瞬间。
当您尝试创建日期或时间时,行为会有所不同。 systemUTC
做这个:
Conversion from instant to date or time uses the UTC time-zone.
systemDefaultZone
做这个:
converting to date and time using the default time-zone.
LocalDateTime
, 或
LocalDate
, 或
ZonedDateTime
.例如,假设我的系统时区是
Asia/Shanghai
,全年偏移 UTC+8。现在是 2020-07-29 上海时间凌晨 5 点。如果我这样做
LocalDate.now(Clock.systemUTC())
,它会告诉我
2020-07-28
,因为它仍然是 UTC 时区的 28 日。如果我这样做
LocalDate.now(Clock.systemDefaultZone())
,但是,它会告诉我
2020-07-29
, 因为上海是2020-07-29(系统时区)。
now
日期/时间相关的类使用
systemDefaultZone
.如果我这样做会很奇怪
LocalTime.now()
在上海,看到时间早了8个小时!
关于java - Clock.systemUTC() 和 Clock.systemDefaultZone() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63148324/
我在看 Clock来自java的类,以便我可以将其作为依赖项注入(inject)以获得更好的可测试性。但是我不明白这两种方法的区别systemUTC和 systemDefaultZone . Inst
我是一名优秀的程序员,十分优秀!