【问题标题】:Determine Timezone based on offset and DST offset根据偏移量和 DST 偏移量确定时区
【发布时间】:2011-08-04 20:08:36
【问题描述】:

我想知道是否有办法在将 2 个 gmt-hour-offsets 作为整数的情况下构建 java TimeZone 对象。例如,如果给我(-5, -6),那么我希望能够将其解释为 EST 时间。此外,一旦我知道它对应的位置,我希望能够找出该时区中的给定日期是否在 DST 中。所以理想情况下,

public static TimeZone getTimeZone(int offsetHrs, int dstOffsetHrs);
...
TimeZone tz = getTimeZone(-5, -6);
if(tz.isDST(currentDate)) {
    //Do stuff...
}

然后如果offsetHours和dstOffsetHrs相同,那么我们就忽略dst....别问为什么,这是一个要求,要么我需要确认可以完成,要么我需要看一些其他地方的重大变化。
提前致谢

【问题讨论】:

  • 您看过 TimeZone (download.oracle.com/javase/6/docs/api/java/util/TimeZone.html) 对吗?在 javadoc 的第一句话中,它声明“TimeZone 表示时区偏移,并且还计算出夏令时。”这不是你要找的吗?主要是?
  • @hooknc 不完全是,b/c 时区实例只能用已知的时区名称/标识符构造。它没有办法根据任意偏移量构建它,然后将其与现有偏移量进行比较......尽管我猜我可能会这样做......
  • TimeZone 类有一个 getAvailableIDs(int rawOffset) 方法,您可以使用该方法返回具有给定偏移量的 TimeZone ID 列表。不过,这并没有考虑到 dstOffset,因此您需要对该列表进行一些操作,以将其缩小到实际遵守 DST 的那些。

标签: java timezone dst


【解决方案1】:

否 - 可以有多个时区具有相同的偏移量,但在不同的日期转换。当然,如果你乐于接受这种潜在的歧义,那应该不是不可能的......

例如,使用 Joda DateTimeZone 您可能希望从某个固定日期开始(例如 2010 年 1 月 1 日)并查看每个时区的接下来的几个转换 - 如果时区 过渡 - 计算出它的标准/日光偏移量是多少。然后,您可以使用isStandardOffset 来确定特定时刻是在 DST 还是标准时间。

【讨论】:

  • 嗯,这就是我的想法(和恐惧)。感谢您的确认。我将不得不研究一些使用当前默认时间的方法,并根据需要进行调整。
猜你喜欢
  • 2011-12-13
  • 2019-08-29
  • 2012-11-30
  • 2011-09-02
  • 2014-02-04
  • 2010-09-15
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多