我试图用获取夏令时时间的问题?
Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone(gmt));
获得的其他GMT值的时间,但我怎么能得到DST时间在该时区。
我试图用获取夏令时时间的问题?
Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone(gmt));
获得的其他GMT值的时间,但我怎么能得到DST时间在该时区。
在java.util.TimeZone中有几种方法可以获得夏令时。请查看BlackBerry Java Docs页面。
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日历,时区,日期等
这是不是在这个问题完全清楚,但黑莓使用Java的我,所以没有按”没有可用的完整Java SE API。见http://www.blackberry.com/developers/docs/7.0.0api/java/util/TimeZone.html –
好吧,我没有意识到,这应该在黑莓上工作。但是,从您发布的文档链接中,我发现它有getOffset和getRawOffset。这些之间的差异应该给你当前的夏令时量。 – Ron