Java不同时区(timezone)的坑

最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间。

我的机子的JVM经常时区出错,每次用导入注册表的方法恢复,但是不长久,而且在C系统中很正常。后来在程序代码中加入设置默认时区的方法解决:

TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");

//将JVM的默认时区设为东部+8时间,也就是北京时间
TimeZone.setDefault(tz);

这样程序中的时区不再受影响。

Java对世界不同时区之间的时间转换提供了非常方便的处理方法。主要的处理类是`java.util.TimeZone`和`java.util.Calendar`。 首先,通过`TimeZone`类可以获取世界上所有的时区列表,可以通过`getAvailableIDs()`方法来获取,返回一个包含所有时区ID的字符串数组。 然后,可以通过`TimeZone.getTimeZone(String)`方法来获取指定时区的`TimeZone`对象。这个方法接受一个时区ID作为参数,并返回对应的`TimeZone`对象。 接下来,使用`Calendar`类来进行时间的转换操作。`Calendar`类提供了许多方法,可以方便地进行日期和时间的计算、设置和获取。可以通过`Calendar.getInstance(TimeZone)`方法获取指定时区的`Calendar`实例。 对于时间转换,可以使用以下方法: - `setTimeZone(TimeZone)`:设置`Calendar`的时区。 - `get(int field)`:获取指定字段的值,例如年、月、日、小时、分钟等。 - `set(int field, int value)`:设置指定字段的值,例如年、月、日、小时、分钟等。 - `add(int field, int amount)`:增加或减少指定字段的值,例如增加一天、减少一小时等。 - `getTime()`:将`Calendar`对象转换为`Date`对象。 - `setTime(Date)`:将`Date`对象转换为`Calendar`对象。 通过这些方法,可以在不同时区间进行时间的转换计算。可以根据不同的需求,在不同的场景下使用这些方法来处理世界不同时区之间的时间转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值