2011-07-04 88 views

回答

0

java.util.TimeZone中有几种方法可以获得夏令时。请查看BlackBerry Java Docs页面。

0

TimeZone类为特定时区对象提供getDSTSavings()方法。 (JavaDoc:“返回要添加到本地标准时间以获取本地挂钟时间的时间量。”)

Calendar界面提供了两个getOffset()方法,可以让您找到UTC的偏移量。 (JavaDoc:“返回指定日期的UTC时区的偏移量,如果夏令时在指定日期生效,偏移值将根据夏令时量进行调整。”)

请参阅这段代码神交的java的时间复杂的方式:

@Test 
public void testDST() { 
    final TimeZone met = TimeZone.getTimeZone("MET"); 
    Calendar gc = new GregorianCalendar(met); 
    final long timeInMillis = gc.getTimeInMillis(); 
    final long gmtTime= timeInMillis-(gc.getTimeZone().getOffset(timeInMillis)); 
    final Date gmtDate = new Date(gmtTime); 
    System.out.printf("%-40s: %tc\n%-40s: %tc\n%-40s: %tc\n%-40s: %d\n%-40s: %d", 
      "new Date() (local timezone)",new Date(), 
      "UTC", gmtDate , 
      "now from Calendar with TC GMT+02:00",gc, 
      "zoneoffset",gc.get(Calendar.ZONE_OFFSET), 
      "dst savings",met.getDSTSavings()); 

} 

您也可以定义自己的SimpleTimeZone,并提供自定义的DST规则,但是,我还没有找到如何让从预定义的时区信息。

您还应该知道,如果TimeZone.getTimeZone(TZName)没有找到指定的时区,它不会引发异常,但它只是使用GMT,这可能会导致重大的误解。

你可以找到所有这些信息(以及更多)在Javadoc日历,时区,日期等

+0

这是不是在这个问题完全清楚,但黑莓使用Java的我,所以没有按”没有可用的完整Java SE API。见http://www.blackberry.com/developers/docs/7.0.0api/java/util/TimeZone.html –

+0

好吧,我没有意识到,这应该在黑莓上工作。但是,从您发布的文档链接中,我发现它有getOffset和getRawOffset。这些之间的差异应该给你当前的夏令时量。 – Ron