树叶云鸿蒙OS教程:鸿蒙OS TimeZone

TimeZone

java.lang.Object

|—java.util.TimeZone

public abstract class TimeZone
extends Object
implements Serializable, Cloneable

TimeZone 表示时区偏移量,也计算夏令时。

通常,您使用 getDefault 获得一个 TimeZone,它根据程序运行的时区创建一个 TimeZone。 例如,对于在日本运行的程序,getDefault 根据日本标准时间创建一个 TimeZone 对象。

您还可以使用 getTimeZone 和时区 ID 获取 TimeZone。 例如,美国太平洋时区的时区 ID 是“America/Los_Angeles”。 因此,您可以通过以下方式获取美国太平洋时间 TimeZone 对象:

 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 

您可以使用 getAvailableIDs 方法遍历所有受支持的时区 ID。 然后,您可以选择支持的 ID 来获取 TimeZone。 如果您想要的时区不是由受支持的 ID 之一表示,则可以指定自定义时区 ID 以生成 TimeZone。 自定义时区 ID 的语法是:

 CustomID:
         GMT Sign Hours : Minutes
         GMT Sign Hours Minutes
         GMT Sign Hours
 Sign: one of
         + -
 Hours:
         Digit
         Digit Digit
 Minutes:
         Digit Digit
 Digit: one of
         0 1 2 3 4 5 6 7 8 9

小时必须介于 0 到 23 之间,分钟必须介于 00 到 59 之间。例如,“GMT+10”和“GMT+0010”分别表示比 GMT 提前十小时和十分钟。

格式与区域无关,数字必须取自 Unicode 标准的基本拉丁语块。 不能使用自定义时区 ID 指定夏令时转换计划。 如果指定的字符串与语法不匹配,则使用“GMT”。

创建 TimeZone 时,指定的自定义时区 ID 以以下语法规范化:

 NormalizedCustomID:
         GMT Sign TwoDigitHours : Minutes
 Sign: one of
         + -
 TwoDigitHours:
         Digit Digit
 Minutes:
         Digit Digit
 Digit: one of
         0 1 2 3 4 5 6 7 8 9

例如,TimeZone.getTimeZone(“GMT-8”).getID() 返回“GMT-08:00”。 三字母时区 ID 为了与 JDK 1.1.x 兼容,还支持其他一些三字母时区 ID(例如“PST”、“CTT”、“AST”)。 但是,不推荐使用它们,因为相同的缩写通常用于多个时区(例如,“CST”可能是美国“中部标准时间”和“中国标准时间”),Java 平台只能识别其中之一 他们。

字段摘要

修饰符和类型字段描述
static intLONGgetDisplayName() 的样式说明符,指示长名称,例如“太平洋标准时间”。
static intSHORTgetDisplayName() 的样式说明符,指示短名称,例如“PST”。

构造函数摘要

构造函数描述
TimeZone()唯一的构造函数

方法总结

修饰符和类型方法描述
Objectclone()创建此 TimeZone 的副本。
static String[]getAvailableIDs()获取支持的所有可用 ID。
static String[]getAvailableIDs(int rawOffset)根据给定的时区偏移量获取可用的 ID,以毫秒为单位。
static TimeZonegetDefault()获取 Java 虚拟机的默认时区。
StringgetDisplayName()返回此 TimeZone 的长标准时间名称,适合在默认语言环境中呈现给用户。
StringgetDisplayName(boolean daylight, int style)返回此 TimeZone 的指定样式的名称,该名称适合在默认语言环境中呈现给用户。
StringgetDisplayName(boolean daylight, int style, Locale locale)返回此 TimeZone 的指定样式的名称,该名称适合在指定区域设置中呈现给用户。
StringgetDisplayName(Locale locale)返回此 TimeZone 的长标准时间名称,适合在指定区域设置中呈现给用户。
intgetDSTSavings()返回要添加到本地标准时间以获取本地挂钟时间的时间量。
StringgetID()获取该时区的 ID。
abstract intgetOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)获取当前日期的时区偏移量,在夏令时的情况下进行修改。
intgetOffset(long date)返回此时区在指定日期与 UTC 的偏移量。
abstract intgetRawOffset()返回添加到 UTC 以获取此时区的标准时间的时间量(以毫秒为单位)。
static TimeZonegetTimeZone(String ID)获取给定 ID 的时区。
static TimeZonegetTimeZone(ZoneId zoneId)获取给定 zoneId 的 TimeZone。
booleanhasSameRules(TimeZone other)如果此区域与另一个区域具有相同的规则和偏移量,则返回 true。
abstract booleaninDaylightTime(Date date)查询给定日期是否在该时区的夏令时。
booleanobservesDaylightTime()如果此 TimeZone 当前处于夏令时,或者如果在将来的任何时间发生从标准时间到夏令时的转换,则返回 true。
static voidsetDefault(TimeZone zone)设置由 getDefault 方法返回的 TimeZone。
voidsetID(String ID)设置时区 ID。
abstract voidsetRawOffset(int offsetMillis)将基准时区偏移设置为 GMT。
ZoneIdtoZoneId()将此 TimeZone 对象转换为 ZoneId。
abstract booleanuseDaylightTime()查询此 TimeZone 是否使用夏令时。
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

LONG

public static final int LONG

getDisplayName() 的样式说明符,指示长名称,例如“太平洋标准时间”。

SHORT

public static final int SHORT

getDisplayName() 的样式说明符,指示短名称,例如“PST”。

构造函数详细信息

TimeZone

public TimeZone()

唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)

方法详情

getOffset

public abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)

获取当前日期的时区偏移量,在夏令时的情况下进行修改。 这是添加到 UTC 以获取本地时间的偏移量。

如果基础 TimeZone 实现子类支持历史夏令时时间表和 GMT 偏移更改,则此方法返回历史正确偏移。

参数:

参数名称参数描述
era给定日期的时代。
year给定日期的年份。
month给定日期的月份。 月份是从 0 开始的。 例如,0 表示一月。
day给定日期的月份中的某一天。
dayOfWeek给定日期的星期几。
milliseconds标准本地时间的毫秒数。

返回:

添加到 GMT 以获取本地时间的偏移量(以毫秒为单位)。

getOffset

public int getOffset(long date)

返回此时区在指定日期与 UTC 的偏移量。 如果夏令时在指定日期生效,则偏移值会根据夏令时进行调整。

如果基础 TimeZone 实现子类支持历史夏令时时间表和 GMT 偏移更改,则此方法返回历史正确偏移值。

参数:

参数名称参数描述
date自 1970 年 1 月 1 日 00:00:00 GMT 以来以毫秒为单位的日期

返回:

添加到 UTC 以获取本地时间的时间量(以毫秒为单位)。

setRawOffset

public abstract void setRawOffset(int offsetMillis)

将基准时区偏移设置为 GMT。 这是添加到 UTC 以获取本地时间的偏移量。

如果底层 TimeZone 实现子类支持历史 GMT 偏移量更改,则将指定的 GMT 偏移量设置为最新的 GMT 偏移量,并使用与已知的最新 GMT 偏移量值的差值来调整所有历史 GMT 偏移量值。

参数:

参数名称参数描述
offsetMillis给定的基准时区偏移到 GMT。

getRawOffset

public abstract int getRawOffset()

返回添加到 UTC 以获取此时区的标准时间的时间量(以毫秒为单位)。 因为这个值不受夏令时影响,所以称为原始偏移量。

如果底层 TimeZone 实现子类支持历史 GMT 偏移更改,则该方法返回当前日期的原始偏移值。 例如,在檀香山,其原始偏移量在 1947 年从 GMT-10:30 更改为 GMT-10:00,并且此方法始终返回 -36000000 毫秒(即 -10 小时)。

返回:

添加到 UTC 的原始偏移时间量(以毫秒为单位)。

getID

public String getID()

获取该时区的 ID。

返回:

这个时区的ID。

setID

public void setID(String ID)

设置时区 ID。 这不会更改时区对象中的任何其他数据。

参数:

参数名称参数描述
ID新时区 ID。

getDisplayName

public final String getDisplayName()

返回此 TimeZone 的长标准时间名称,适合在默认语言环境中呈现给用户。

该方法等价于:

 getDisplayName(false, LONG,
                Locale.getDefault(Locale.Category#DISPLAY))

返回:

此时区在默认语言环境中的可读名称。

getDisplayName

public final String getDisplayName(Locale locale)

返回此 TimeZone 的长标准时间名称,适合在指定区域设置中呈现给用户。

该方法等价于:

 getDisplayName(false, LONG, locale) 

参数:

参数名称参数描述
locale提供显示名称的语言环境。

返回:

此时区在给定语言环境中的可读名称。

Throws:

Throw名称Throw描述
NullPointerException如果 locale 为空

getDisplayName

public final String getDisplayName(boolean daylight, int style)

返回此 TimeZone 的指定样式的名称,该名称适合在默认语言环境中呈现给用户。 如果指定的日光为真,则返回夏令时名称(即使此 TimeZone 不遵守夏令时)。 否则,返回标准时间名称。

该方法等价于:

 getDisplayName(daylight, style,
                Locale.getDefault(Locale.Category#DISPLAY))

参数:

参数名称参数描述
daylighttrue 指定夏令时名称,或 false 指定标准时间名称
style长或短

返回:

此时区在默认语言环境中的可读名称。

Throws:

Throw名称Throw描述
IllegalArgumentException如果 style 无效

getDisplayName

public String getDisplayName(boolean daylight, int style, Locale locale)

返回此 TimeZone 的指定样式的名称,该名称适合在指定区域设置中呈现给用户。 如果指定的日光为真,则返回夏令时名称(即使此 TimeZone 不遵守夏令时)。 否则,返回标准时间名称。

查找时区名称时,使用从指定语言环境派生的 ResourceBundle.Control#getCandidateLocales(String,Locale)。 (不执行 ResourceBundle.Control#getFallbackLocale(String,Locale) 搜索。)如果在搜索路径的任何 Locale 中找到时区名称,包括 Locale#ROOT,则返回该名称。 否则,返回标准化自定义 ID 格式的字符串。

参数:

参数名称参数描述
daylighttrue 指定夏令时名称,或 false 指定标准时间名称
style长或短
locale提供显示名称的语言环境。

返回:

此时区在给定语言环境中的可读名称。

Throws:

Throw名称Throw描述
IllegalArgumentException如果 style 无效
NullPointerException如果 locale 为空

getDSTSavings

public int getDSTSavings()

返回要添加到本地标准时间以获取本地挂钟时间的时间量。

如果对 useDaylightTime() 的调用返回 true,则默认实现返回 3600000 毫秒(即一小时)。 否则,返回 0(零)。

如果底层 TimeZone 实现子类支持历史和未来夏令时计划更改,则此方法返回可以作为未来预测的最后一个已知夏令时规则的节省时间量。

如果需要任何给定时间戳的节省时间量,请使用此 TimeZone 和时间戳构造一个日历,并调用 Calendar#get(int)(Calendar#DST_OFFSET)。

返回:

以毫秒为单位的节省时间

useDaylightTime

public abstract boolean useDaylightTime()

查询此 TimeZone 是否使用夏令时。

如果底层 TimeZone 实现子类支持历史和未来的夏令时时间表更改,则此方法引用最后一个已知的夏令时规则,该规则可以是未来的预测,并且可能与当前规则不同。 如果还应考虑当前规则,请考虑调用observesDaylightTime()。

返回:

如果此 TimeZone 使用夏令时,则为 true,否则为 false。

observesDaylightTime

public boolean observesDaylightTime()

如果此 TimeZone 当前处于夏令时,或者如果在将来的任何时间发生从标准时间到夏令时的转换,则返回 true。

如果 useDaylightTime() 或 inDaylightTime(new Date()) 返回 true,则默认实现返回 true。

返回:

如果此 TimeZone 当前处于夏令时,或者如果在未来任何时间发生从标准时间到夏令时的转换,则为 true; 否则为 false。

inDaylightTime

public abstract boolean inDaylightTime(Date date)

查询给定日期是否在该时区的夏令时。

参数:

参数名称参数描述
date给定的日期。

返回:

如果给定日期在夏令时,则为 true,否则为 false。

getTimeZone

public static TimeZone getTimeZone(String ID)

获取给定 ID 的时区。

参数:

参数名称参数描述
IDTimeZone 的 ID,可以是“PST”等缩写、“America/Los_Angeles”等全名或“GMT-8:00”等自定义 ID。 请注意,支持缩写仅是为了兼容 JDK 1.1.x,应使用全名。

返回:

指定的时区,如果无法理解给定的 ID,则为 GMT 时区。

getTimeZone

public static TimeZone getTimeZone(ZoneId zoneId)

获取给定 zoneId 的 TimeZone。

参数:

参数名称参数描述
zoneId从中获取时区 ID 的 ZoneId

返回:

指定的时区,如果无法理解给定的 ID,则为 GMT 时区。

Throws:

Throw名称Throw描述
NullPointerException如果 zoneId 为空

toZoneId

public ZoneId toZoneId()

将此 TimeZone 对象转换为 ZoneId。

返回:

表示与此 TimeZone 相同时区的 ZoneId

getAvailableIDs

public static String[] getAvailableIDs(int rawOffset)

根据给定的时区偏移量获取可用的 ID,以毫秒为单位。

参数:

参数名称参数描述
rawOffset给定的时区 GMT 偏移量(以毫秒为单位)。

返回:

一个 ID 数组,其中该 ID 的时区具有指定的 GMT 偏移量。 例如,“America/Phoenix”和“America/Denver”都有 GMT-07:00,但夏令时行为不同。

getAvailableIDs

public static String[] getAvailableIDs()

获取支持的所有可用 ID。

返回:

一个 ID 数组。

getDefault

public static TimeZone getDefault()

获取 Java 虚拟机的默认时区。 如果缓存的默认 TimeZone 可用,则返回其克隆。 否则,该方法采取以下步骤来确定默认时区。

  • 使用 user.timezone 属性值作为默认时区 ID(如果可用)。
  • 检测平台时区 ID。 平台时区和 ID 映射的来源可能因实现而异。
  • 如果给定或检测到的时区 ID 未知,则使用 GMT 作为最后的手段。

从 ID 创建的默认 TimeZone 被缓存,并返回其克隆。 user.timezone 属性值在返回时设置为 ID。

返回:

默认时区

setDefault

public static void setDefault(TimeZone zone)

设置由 getDefault 方法返回的 TimeZone。 区域被缓存。 如果 zone 为 null,则清除缓存的默认 TimeZone。 此方法不会更改 user.timezone 属性的值。

参数:

参数名称参数描述
zone新的默认时区,或 null

Throws:

Throw名称Throw描述
SecurityException如果安全管理器的 checkPermission 拒绝 PropertyPermission(“user.timezone”, “write”)

hasSameRules

public boolean hasSameRules(TimeZone other)

如果此区域与另一个区域具有相同的规则和偏移量,则返回 true。 也就是说,如果该区域仅在 ID 上有所不同,如果有的话。 如果其他区域为空,则返回 false。

参数:

参数名称参数描述
other要与之比较的 TimeZone 对象

返回:

如果另一个区域不为空且与此区域相同,则为 true,ID 可能除外

clone

public Object clone()

创建此 TimeZone 的副本。

覆盖:

在类 Object 中克隆

返回:

此 TimeZone 的克隆

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/179623.html<

(0)
运维的头像运维
上一篇2025-03-26 15:43
下一篇 2025-03-26 15:44

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注