Java将本地时间转换为无DST时间 - 在切换时间内持续进行

时间:2012-11-13 12:33:39

标签: java date timezone gregorian-calendar

我们遇到的问题是,我们正在接收当地时间定义的时间对象 - 使用DST。 现在,我们将接收时间作为无DST时区存储在数据库中。 一年一次,我们有一个小时的转换不正确: 在凌晨2:00,时钟将在进入的DST时区设置为凌晨1:00(切换到冬季时间)。 我们在当地时间(即GMT)纠正到凌晨2点。 凌晨2:15我们收到一个数据包,我们再次纠正到2:15。但现在真的是2:15而不是1:15。 原则上我们现在在系统中加倍了。 java格里高利历不能在时区之间进行转换,并计算当前的本地时间(以确定它是否必须考虑到加倍的小时)。

这是我将传入的DST时区转换为非DST时区的代码:

public static GregorianCalendar getCal(XMLGregorianCalendar c)
{

    GregorianCalendar toGregorianCalendar = c.toGregorianCalendar();
    TimeZone tz = TimeZone.getTimeZone("GMT+1");

    toGregorianCalendar.setTimeZone(tz);
    toGregorianCalendar.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));

    return toGregorianCalendar;
}

这一年似乎全部工作正常 - 除了转换回冬季时间...... 关于这种心灵弯曲问题的任何想法?

0 个答案:

没有答案