如何比较TimeZones

我需要比较时区,例如亚洲/新加坡< UTC<太平洋/火奴鲁鲁. 我正在使用 java.util.TimeZone(没有实现 Comparable).

由于关于将日期与不同时区进行比较的大量问题,我对现有实施的搜索未获成功.

问题:Comparator< TimeZone>的正确实现是什么?这将解决这个问题(如果适用的话,是什么让它比其他解决方案更好)?

请注意,我无法使用Joda Time解决此问题,因此“使用Joda Time”不是有效的答案.

编辑清晰

<上面的符号没有明确定义.我的特定用例只需要从东到西的简单“地理”排序.正如评论所指出的,更先进和可推广的解决方案将考虑时间因素,如夏令时和历史GMT偏移变化.所以我认为我们可以考虑两个排序,每个排序需要不同的比较器< TimeZone>执行:

>严格地理(当前UTC) – 由my answer处理.
>对当地或民用时间变化敏感 – 于rgettman’s answer处理.

解决方法

一个人可能能够创建一个Comparator< TimeZone>考虑到时区差异. TimeZone可能会或可能不会考虑夏令时,这会调整原始偏移,从而搞乱原始偏移比较. TimeZone类似乎支持基于2个getoffset方法的调整,但它们需要一个引用日期.怎么样:
public class TimeZoneComparator implements Comparator<TimeZone>
{
   private long date;

   public TimeZoneComparator(long date)
   {
      this.date = date;
   }

   public int compare(TimeZone tz1,TimeZone tz2)
   {
      return tz2.getoffset(this.date) - tz2.getoffset(this.date);
   }
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...