You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字符串创建UTC时区的java.util.TimeZone对象?

获取UTC+4对应的java.util.TimeZone对象

问题原因

TimeZone.getTimeZone("UTC+4:00")返回GMT是因为该方法不识别"UTC+4:00"这种格式的时区ID,当传入的ID无法匹配时,会默认返回GMT时区。

解决方法

方法1:使用GMT偏移格式

直接使用GMT+4或GMT+04:00作为时区ID,这是TimeZone类认可的格式:

val timeZone = TimeZone.getTimeZone("GMT+4")
print(timeZone)

输出结果:

sun.util.calendar.ZoneInfo[id="GMT+04:00",offset=14400000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

这个对象的偏移量是14400000毫秒(即4小时),完全符合UTC+4的需求。

方法2:借助Java 8+的java.time API转换

如果项目使用Java 8及以上版本,推荐用java.time包的API先创建偏移量,再转换为TimeZone对象,兼容性更好:

import java.time.ZoneOffset
import java.util.TimeZone

val zoneOffset = ZoneOffset.of("+04:00")
val timeZone = TimeZone.getTimeZone(zoneOffset)
print(timeZone)

同样会得到正确的UTC+4时区对象。

方法3:使用IANA标准时区ID

如果需要对应实际地区的时区(部分地区常年处于UTC+4且无夏令时),可以使用IANA时区ID,比如Asia/Dubai:

val timeZone = TimeZone.getTimeZone("Asia/Dubai")
print(timeZone)

输出的时区对象偏移量同样为UTC+4,且包含该地区的时区规则。

内容的提问来源于stack exchange,提问作者user15941734

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:10:24