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

TimeZone tz = TimeZone.getTimeZone("GMT" + gmtTZ);

int offset = tz.getOffset((new DateTime().getMillis()));

System.out.println(“— > “+offset / 3600000d);



给我-5,但未考虑我所在时区的时差。

最佳答案

阅读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(),但除​​了可测试性之外,我看不到其他要点。

10-08 00:59