Java时区

时间:2020-02-23 14:36:58  来源:igfitidea点击:

Java TimeZone类表示时区偏移量,还可以计算夏令时。
时区是地球上的一个区域,出于所有目的,该区域均遵循统一的标准时间。
时区对于程序很重要,它使用户感觉应用程序在用户本地。

Java时区

Java TimeZone类用于在程序中实现和操纵各种TimeZone。
该类是java.util包的一部分,应与Calendar类一起使用。

从Java 8开始,对于日期时间API,时区由java.time.ZoneId类表示。
仅当您使用Java 8日期时间类(如" ZonedDateTimeclass")时才需要此方法。
如果您使用Java 7和更早的日期时间API中的Calendar类,则仍可以使用java.util.TimeZone类。

创建Java TimeZone实例

有两种创建TimeZone对象的方法。

  • 使用getDefault()方法:TimeZone类包含一个getDefault()方法,该方法根据应用程序或者程序其中运行的时区提供TimeZone对象。

如果上述程序在旧金山运行,则默认时区IST将作为TimeZone对象提供。

  • 使用getTimeZone()方法:TimeZone类包含getTimeZone()方法,其中该方法的输入参数是时区ID。

我们在简介部分讨论了TimeZone应该与Calendar一起使用。
让我们尝试了解应如何做。

在日历中使用TimeZone

为了将TimeZone与Calendar一起使用,我们需要Calendar类的实例。
我们将看一个如何从日历获取时区的示例。

TimeZone tz   = TimeZone.getDefault();

现在,如果要为Calendar实例设置时区,我们可以按以下步骤执行该任务。

TimeZone tz = TimeZone.getTimeZone(“America/Chicago”)

Java TimeZone方法

  • getDisplayName():TimeZone的标准时间名称,适合在默认语言环境中呈现给用户。

  • getID():返回时区的ID。

  • getOffset(long date):返回指定时间该时区与UTC的偏移量。

我们还可以使用时区转换来根据提供的ID来转换时区,当应用程序在两个特定时区中运行时,需要用例。

Java TimeZone转换

这是将日期从日历转换为不同时区的示例。

Calendar calendar = new GregorianCalendar();
TimeZone timeZone = calendar.getTimeZone();

以上示例产生的输出:

calendar.setTimeZone(timeZone);

在上面的示例中,以毫秒表示的时间在美洲和亚洲是相同的,但是表示时区变化的小时字段存在差异。

Java TimeZone ID

我们可以使用getAvailableIDs()并遍历方法的结果来获取可用于TimeZone的ID列表。

TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getDisplayName()) //San Franceco Standard Time