本文转载于
CSDN博主「Gene Xu」
原文链接:https://blog.csdn.net/goodbye_youth/article/details/81807273
一、TimeZone 类的定义
TimeZone 类位于 java.util 包中,是一个抽象类,主要包含了对于时区的各种操作,可以进行计算时间偏移量或夏令时等操作
二、TimeZone 类常用方法
getAvailableIDs()
- 获取Java支持的所有时区 ID
1 | System.out.println(Arrays.toString(TimeZone.getAvailableIDs())); |
getAvailableIDs(int rawOffset)
- 根据 时间偏移量 来获取时区 ID
1 | // 东八区时间,与标准时间相差8小时 |
getDefault()
- 获取当前系统的默认时区,中国默认为东八区
1 | System.out.println(TimeZone.getDefault()); |
setDefault(TimeZone zone)
- 设置当前系统的默认时区
1 | TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); |
getTimeZone(String ID)
- 根据时区 ID 来获取其对应的时区
1 | System.out.println(TimeZone.getTimeZone("GMT+08:00")); |
getTimeZone(ZoneId zoneId)
- 根据 ZoneId 对象来获取其对应的时区
1 | System.out.println(TimeZone.getTimeZone(ZoneId.of("GMT+08:00"))); |
getDisplayName()
- 获取该 TimeZone 对象的时区名称
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getDisplayName(Locale locale)
- 获取该 TimeZone 对象的时区名称,并根据 Locale 对象进行国际化
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getDisplayName(boolean daylight, int style)
-
获取该 TimeZone 对象的时区名称
-
daylight
- true:指定夏令时名称
- false:指定标准时间名称
-
style
- TimeZone.LONG:显示全称
- TimeZone.SHORT:显示简称
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getDisplayName(boolean daylight, int style, Locale locale)
-
获取该 TimeZone 对象的时区名称,并根据 Locale 对象进行国际化
-
daylight
- true:指定夏令时名称
- false:指定标准时间名称
-
style
- TimeZone.LONG:显示全称
- TimeZone.SHORT:显示简称
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getID()
- 获取该 TimeZone 对象的时区 ID
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
setID(String ID)
- 设置该 TimeZone 对象的时区 ID
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getOffset(long date)
- 获取该时间所在时区的时间偏移量
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getDSTSavings()
-
在夏令时规则生效时,返回相对于标准时间提前的毫秒数
-
如果此时区不实施夏令时,则为 0
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
getRawOffset()
- 获取时间原始偏移量,该值不受夏令时的影响,故称为时间原始偏移量
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
setRawOffset(int offsetMillis)
- 设置时间原始偏移量
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
toZoneId()
- 将 TimeZone 对象转换为 ZoneId 对象
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
useDaylightTime()
- 查询此时区是否使用夏令时
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
inDaylightTime(Date date)
- 查询给定的日期是否在此时区的夏令时中
1 | TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); |
hasSameRules(TimeZone other)
-
如果两时区仅时区 ID 不同,但具有相同的规则和时间偏移量,则返回 true
-
如果另一个时区为空,则返回 false
1 | TimeZone timeZone1 = TimeZone.getTimeZone("Asia/Shanghai"); |