java gettimezone_java中已知一个时区TimeZone,想取下一个时区如何取?

展开全部

在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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果要使用 Java 代码编写一个面向全球时区的每日任务,可以采用以下步骤: 1. 使用 Java 的日期和时间 API,例如 java.time 包的 LocalDate 和 LocalTime 类,确定每天的任务的具体日期和时间。 2. 使用 java.time 包的 ZoneId 类,确定要在全球范围内的哪些时区执行任务。 3. 使用 java.time 包的 ZonedDateTime 类,将本地日期和时间与时区信息结合起来。 4. 使用 java.util.Timer 或 java.util.concurrent 包的定时器类,安排在指定的日期和时间执行任务。 5. 在任务代码,使用 java.time 包的 ZoneId 类,获用户所在时区的当前日期和时间,并根据需要执行任务。 以上是实现面向全球时区的每日任务的一个大致思路,具体实现细节还需要根据需求具体讨论。 ### 回答2: 要使用Java代码编写一个面向全球时区的每日任务,首先需要获当前的日期和时间,并且考虑不同时区的差异。 1. 首先,使用Java的`TimeZone`类获所有可用的时区。 ```java String[] availableTimeZones = TimeZone.getAvailableIDs(); ``` 2. 接下来,可以让用户选择一个时区。可以使用Java的`Scanner`类来获用户输入。 ```java Scanner scanner = new Scanner(System.in); System.out.println("请选择一个时区:"); String selectedTimeZone = scanner.nextLine(); ``` 3. 为了获当前日期和时间,可以使用Java的`Calendar`类。 ```java Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(selectedTimeZone)); Date currentDate = calendar.getTime(); ``` 4. 现在可以根据当前日期和时间执行每日任务。这可以是任何任务,例如发送电子邮件、生成报告或者执行其他业务逻辑。 ```java // 在此可执行每日任务 System.out.println("执行每日任务:" + currentDate); ``` 5. 最后,用户可以选择是否继续执行其他时区的每日任务,或者结束程序。 ```java System.out.println("是否继续执行其他时区的每日任务?(输入Y或N)"); String continueChoice = scanner.nextLine(); if (continueChoice.equalsIgnoreCase("N")) { System.exit(0); } ``` 以上代码可以作为一个简单的示例,用于向用户提供选择时区并执行每日任务。您可以根据自己的需求进行扩展和修改。 ### 回答3: 在Java,可以使用java.util包的Date和Calendar类来实现面向全球时区的每日任务。 第一步是获世界各个时区的列表。可以使用TimeZone类的getAvailableIDs()方法。这将返回一个包含所有可用时区ID的字符串数组。 接下来,可以使用Calendar类来创建一个表示当前时间的实例。可以使用Calendar.getInstance()方法来获当前时间的Calendar对象。 然后,可以使用setTimezone(TimeZone timezone)方法将Calendar对象设置为指定时区。可以使用TimeZone类的getTimeZone(String id)方法来获特定时区TimeZone对象。 现在,可以使用Calendar类的get()方法来获当前时间的小时,分钟和秒。可以使用Calendar类的set()方法将这些值设置为执行每日任务所需的时间,例如午夜12点。 然后,可以使用Calendar类的add()方法将Calendar对象的日期增加一天。这将在每天午夜12点后触发任务。 最后,可以使用Timer类或ScheduledExecutorService类来定期执行每天的任务。可以使用Timer类的schedule(TimerTask task, Date time)方法或ScheduledExecutorService类的scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)方法来设置每日任务的执行时间和重复间隔。 以上是使用Java代码编写面向全球时区的每日任务的基本步骤。通过使用Date、Calendar、TimeZone、Timer和ScheduledExecutorService类,可以在不同的时区正确地执行每日任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值