【发布时间】: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 的那些。