展开全部
在TimeZone类中有个静态方法 getAvailableIDs(int rawoffset) 可以获取rawoffset对应的所有的时区32313133353236313431303231363533e59b9ee7ad9431333337383865id,其中参数表示时间偏移量,用毫秒表示,例如东八区,则为8*60*60*1000。有了区域ID,就可以根据静态方法getTimeZone(String zoneId)获取对应的区域了。
所以获取一个时间对应的所有区域就可以实现为:TimeZone tz = TimeZone.getDefault();
int rawOffset = 8;
String[] ids = TimeZone.getAvailableIDs(rawOffset * 60 * 60 * 1000);
for (String id : ids) {
tz = TimeZone.getTimeZone(id);
}
针对题主的要求,拿到tz之后,需要获得下一个时区,可以这样实现TimeZone tz = TimeZone.getTimeZone("GMT+8:00");
int x = 1;//可以为-2、-1、1、2。。。先获取rawoffset,再获取时区
int rawOffset = tz.getRawOffset() + x * 60 * 60 * 1000;
String[] ids = TimeZone.getAvailableIDs(rawOffset);
for (String id : ids) {
TimeZone nexttz = TimeZone.getTimeZone(id);
}
本文介绍了如何在Java中使用TimeZone类进行时区操作。通过getAvailableIDs方法获取指定时间偏移量对应的时区ID,并利用getTimeZone方法得到时区实例。此外,还展示了如何获取当前时区并切换到下一个或上一个时区的方法,对于理解和处理时区转换问题具有参考价值。
659

被折叠的 条评论
为什么被折叠?



