在Java中将EST转换为EDT或反之亦然

Gau*_*rav 0 java timezone calendar

任何人都可以讲述三件事:

  1. 如何从java.util.Date实例中检索TimeZone?
  2. 如何知道夏令时是否适用?
    我想我可以做timeZone.getDSTSavings知道,但我现在面临的问题是,即使我把我的系统的日期为2012年2月1日,还是我得到的数值为正(我猜3600000)
  3. 如何将EST时间转换为EDT,反之亦然?

Jon*_*eet 6

如何从java.util.Date实例中检索TimeZone?

没有这样的事情.一个Date 只是代表一个数字,因为Unix的时代,这是在1970年1月1日午夜UTC毫秒.它与特定的日历系统或时区无关.换句话说,如果一个朋友和我一起打电话(零延迟;)并点击我的手指,我们都会同意Date点击的位置 - 即使我使用的是格里高利日历和他使用朱利安日历,即使我在伦敦,他在纽约.这是同一时刻.

如何知道夏令时是否适用?我想我可以通过timeZone.getDSTSavings来了解它,但我面临的问题是,即使我将我的系统的日期定为2012年2月1日,我仍然得到正值(我想3600000)

理想情况下,使用Joda Time而不是java.util.Date/ Calendar/ TimeZone,但在TimeZone你内部可以TimeZone.getOffset(long)用来查找UTC的偏移量,或TimeZone.inDaylightTime(Date)只是给你一个是/否答案.

如何将EST时间转换为EDT,反之亦然?

通常这是一个无效的问题-因为在任何时间一个实例,无论是 EST EDT适用.您通常从一个时区转换为另一个时区,"EDT"和"EST"不是不同的时区 - 它们在同一时区内是不同的偏移.您要求这样做的事实表明您可能不正确地建模您的数据(不幸的是,日期/时间值很容易).请提供更多信息,我们可以为您提供更多帮助.