如何根据给定的ZoneRules

时间:2018-10-23 16:13:08

标签: java time

希望能够创建自特定时区偏移的自定义时区(但要遵守夏时制转换)。例如,希望能够指出:

ZoneId.of("America/New_York+7")

根据夏令时+ 7小时,上述区域将遵守EST或EDT。此申请与外汇市场的开始/结束时间(纽约时间下午5点)相关。

ZoneId中不允许使用上述偏移格式,因为ZoneId仅允许从UTC偏移。

我实现了一个可生成自定义ZoneRules的类,但随后ZoneRegion构造函数中,ZoneId的子类不是公共的。 ZoneRegion具有以下不可用的构造函数:

ZoneRegion(String name, ZoneRules rules)

所以问题是,除了不使用java.time库以外,还有什么方法可以使用DST规则来获取自定义区域的行为?另外,有人知道如何使用Joda日期/时间库吗?

附录

请注意,由于ZoneId中的以下代码,因此无法创建ZoneId的子类(坦率地说,除非有某些我无法理解的安全原因,否则这似乎是一个非常糟糕的主意):

/**
 * Constructor only accessible within the package.
 */
ZoneId() {
    if (getClass() != ZoneOffset.class && getClass() != ZoneRegion.class) {
        throw new AssertionError("Invalid subclass");
    }
}

0 个答案:

没有答案