Java - 我怎样才能获得一个 K-hour-shifted TimeZone?

Posted

技术标签:

【中文标题】Java - 我怎样才能获得一个 K-hour-shifted TimeZone?【英文标题】:Java - how can I obtain a K-hour-shifted TimeZone? 【发布时间】:2015-04-24 12:17:03 【问题描述】:

我有一个 TimeZone 变量(DEFAULT_TIME_ZONE)通过以下代码获得

TimeZone DEFAULT_TIME_ZONE = TimeZone.getTimeZone("GMT");

现在我想获得另一个从 DEFAULT_TIME_ZONE 偏移 K 小时的 TimeZone。

我该怎么做?

【问题讨论】:

一个特定的TimeZone 你可以得到TimeZone tzCET = TimeZone.getTimeZone("CET"); 【参考方案1】:

如果您实际上的意思是“与 UTC 有永久恒定偏移的时区”,那很简单:

int offsetMillis = (int) TimeUnit.HOURS.toMillis(offsetHours);
TimeZone zone = new SimpleTimeZone(offsetMillis, "some id");

如果您的意思是一个时区与另一个时区遵循相​​同的夏令时规则,但移动了一个固定的偏移量,那会有点困难 - 但也不太有用,我认为。

注意,如果你使用Joda Time,你可以通过以下方式实现前者:

DateTimeZone zone = DateTimeZone.forOffsetHours(offsetHours);

(您也将拥有一个更好的 API 来使用......)

【讨论】:

感谢您的快速回复。我还有一个问题,我怎样才能得到 2 TimeZones 之间的小时差? @Season:我建议您为此提出一个新问题,并提供更多细节 - 这实际上取决于您要实现的目标。 @Season - 请记住,如果没有特定的日期和时间,您无法始终了解两个时区之间的差异。

以上是关于Java - 我怎样才能获得一个 K-hour-shifted TimeZone?的主要内容,如果未能解决你的问题,请参考以下文章

没有记录层,我怎样才能只获得 TLS 握手?

我怎样才能获得上一个网址的路径?

我怎样才能获得 Skyscanner API? [关闭]

我怎样才能只从 textClock 获得小时

奏鸣曲捆绑包,我怎样才能获得当前登录的用户?

使用 Linq 反对,我怎样才能获得基于同一列表中另一个字段的值