- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
使用 java8,我们知道使用 ZoneId.default()
可以获得系统默认值ZoneId
,但如何获得默认值 ZoneOffset
?
我看到一个 ZoneId
有一些“规则”,每个规则都有一个 ZoneOffset
, 是否意味着 ZoneId
可能有多个 ZoneOffset
?
最佳答案
tl;博士
OffsetDateTime.now().getOffset()
但是您可能应该使用时区,而不仅仅是与 UTC 的偏移量。
ZoneId.systemDefault()
偏移与时区
-08:00
表示比 UTC 晚八小时,以及
+05:45
表示比
UTC 提前五小时四十五分钟.
America/Los_Angeles
,例如在今年的部分时间偏移量是
-08:00
但在一年的另一部分是
-07:00
夏令时期间。
OffsetDateTime
所以让我们指定一个时刻为
OffsetDateTime
,然后提取
ZoneOffset
.
OffsetDateTime odt = OffsetDateTime.now ();
ZoneOffset zoneOffset = odt.getOffset ();
odt.toString(): 2017-01-02T15:19:47.162-08:00
zoneOffset.toString(): -08:00
now
方法实际上是隐式应用 JVM 当前的默认时区。我建议您始终通过指定所需/预期的时区来明确说明。即使您想要当前的默认区域,也要明确说明以明确您的意图。消除关于您是否打算使用默认值或未考虑时区的歧义,就像程序员经常发生的那样。调用
ZoneId.systemDefault
.
OffsetDateTime odt = OffsetDateTime.now ( ZoneId.systemDefault () );
ZoneOffset zoneOffset = odt.getOffset ();
ZoneId.systemDefault().toString(): America/Los_Angeles
odt: 2017-01-02T15:19:47.162-08:00
zoneOffsetOfOdt: -08:00
int offsetSeconds = zoneOffset.getTotalSeconds ();
offsetSeconds: -28800
ZonedDateTime
另一个例子:也许你想知道魁北克今年圣诞节的抵消额是多少。指定时区
America/Montreal
, 得到一个
ZonedDateTime
,以
ZoneOffset
形式请求其偏移量对象。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate ld = LocalDate.of( 2017 , 12 , 25 );
ZonedDateTime zdtXmas = ld.atStartOfDay( z );
ZoneOffset zoneOffsetXmas = zdtXmas.getOffset();
zdtXmas.toString(): 2017-12-25T00:00-05:00[America/Montreal]
zoneOffsetXmas.toString(): -05:00
zoneOffsetXmas.getTotalSeconds(): -18000
ZoneId
正如 yanys 在评论中所建议的,您可以询问
ZoneId
对于特定的
ZoneOffset
通过作为
Instant
传递片刻.
Instant
class 代表时间线上的一个时刻
UTC分辨率为
nanoseconds (最多九 (9) 位小数)。
OffsetDateTime
和
ZonedDateTime
上面讨论过,我们正在指定 (a) 一个时区,和 (b) 一个时刻。
Instant instant = zdtXmas.toInstant();
ZoneOffset zo = z.getRules().getOffset( instant );
For ZoneId: America/Montreal at instant: 2017-12-25T05:00:00Z the ZoneOffset is: -05:00
ZoneOffset.systemDefault
– 错误或功能?
ZoneOffset
类,
ZoneId
的子类, 被记录为继承了
systemDefault
方法。但是,这实际上不起作用。
ZoneOffset zoneOffset = ZoneOffset.systemDefault() ; // Fails to compile.
error: incompatible types: ZoneId cannot be converted to ZoneOffset
ZoneOffset.systemDefault
确实应该失败。但是文档应该这样说,并有解释。
java.util.Date
,
Calendar
, &
SimpleDateFormat
.
java.sql.*
类。 Hibernate 5 & JPA 2.2 支持 java.time。
关于java - 如何在java8中获得默认的ZoneOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41427384/
我得到的 LocalDateTime 比实际时间少两个小时。我如何获得德国的偏移时间,柏林时间为我的以下代码谢谢。 LocalDateTime dateTime = LocalDateTime.ofE
本文整理了Java中java.time.ZoneOffset.from()方法的一些代码示例,展示了ZoneOffset.from()的具体用法。这些代码示例主要来源于Github/Stackover
本文整理了Java中java.time.ZoneOffset.of()方法的一些代码示例,展示了ZoneOffset.of()的具体用法。这些代码示例主要来源于Github/Stackoverflow
为什么只有当 TotalSeconds 是一刻钟的倍数时,ZoneOffset.ofTotalSeconds(int TotalSeconds)才对 ZoneOffset 使用缓存? if (tota
我想使用基于 UTC 的不同时间偏移来打印 now(): offset=ZoneOffset.ofHours(-1); zoneId=ZoneId.ofOffset("UTC", offset); t
本文整理了Java中java.time.ZoneOffset.getRules()方法的一些代码示例,展示了ZoneOffset.getRules()的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中java.time.ZoneOffset.normalized()方法的一些代码示例,展示了ZoneOffset.normalized()的具体用法。这些代码示例主要来源于Gith
本文整理了Java中java.time.ZoneOffset.ofHoursMinutesSeconds()方法的一些代码示例,展示了ZoneOffset.ofHoursMinutesSeconds(
本文整理了Java中java.time.ZoneOffset.getLong()方法的一些代码示例,展示了ZoneOffset.getLong()的具体用法。这些代码示例主要来源于Github/Sta
本文整理了Java中java.time.ZoneOffset.hashCode()方法的一些代码示例,展示了ZoneOffset.hashCode()的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中java.time.ZoneOffset.equals()方法的一些代码示例,展示了ZoneOffset.equals()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中java.time.ZoneOffset.compareTo()方法的一些代码示例,展示了ZoneOffset.compareTo()的具体用法。这些代码示例主要来源于Github
本文整理了Java中java.time.ZoneOffset.getTotalSeconds()方法的一些代码示例,展示了ZoneOffset.getTotalSeconds()的具体用法。这些代码示
本文整理了Java中java.time.ZoneOffset.ofHours()方法的一些代码示例,展示了ZoneOffset.ofHours()的具体用法。这些代码示例主要来源于Github/Sta
本文整理了Java中java.time.ZoneOffset.toString()方法的一些代码示例,展示了ZoneOffset.toString()的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中java.time.ZoneOffset.systemDefault()方法的一些代码示例,展示了ZoneOffset.systemDefault()的具体用法。这些代码示例主要来
本文整理了Java中java.time.ZoneOffset.ofHoursMinutes()方法的一些代码示例,展示了ZoneOffset.ofHoursMinutes()的具体用法。这些代码示例主
本文整理了Java中java.time.ZoneOffset.getId()方法的一些代码示例,展示了ZoneOffset.getId()的具体用法。这些代码示例主要来源于Github/Stackov
本文整理了Java中java.time.ZoneOffset.ofTotalSeconds()方法的一些代码示例,展示了ZoneOffset.ofTotalSeconds()的具体用法。这些代码示例主
本文整理了Java中org.threeten.bp.ZoneOffset.of()方法的一些代码示例,展示了ZoneOffset.of()的具体用法。这些代码示例主要来源于Github/Stackov
我是一名优秀的程序员,十分优秀!