计算与其他时区的小时差异

时间:2015-12-02 12:59:58

标签: java jodatime

如果我有时区,例如“GMT-05:00”
如何使用Joda找到与当前位置的差异小时数?
我正在使用此代码:

TimeZone tz = TimeZone.getTimeZone("GMT" + gmtTZ);
    
int offset = tz.getOffset((new DateTime().getMillis()));
    
System.out.println(“— > “+offset / 3600000d);
    

给我-5,但它没有考虑我的时区的时差。

1 个答案:

答案 0 :(得分:1)

阅读getOffset方法的文档。 Millis从日期开始不包含任何有关时区的信息,getOffset需要millis参数来判断此特定日期是否在夏令时内。如果是这样,你会再多花一个小时。你这样做的方式永远不会有所不同,你的结果只能是-5 / -4小时。

你甚至不需要JodaTime:

TimeZone timezone = TimeZone.getTimeZone("GMT-5");
TimeZone localTimeZone = TimeZone.getDefault();

int timeZoneOffset = timezone.getOffset(System.currentTimeMillis());
int localTimeZoneOffset = localTimeZone.getOffset(System.currentTimeMillis());

int difference = Math.abs(timeZoneOffset - localTimeZoneOffset ) / 3600000;

如果您希望JodaTime只用System.currentTimeMillis()替换DateTime.now().getMillis(),但除了可测试性之外我没有看到其他观点。