java每日一练之时间处理(三)使用时区

JAVA ginotang 1695℃ 0评论

使用时区

通过java.util.TimeZone类,结合之前介绍的Calendar类,可以对时区进行特定的操作。

注意:在java 8中,时区使用新的类来表示:java.time.ZoneId,但这不是强制性的,只是在你使用了java 8新增的api时(例如ZoneDateTime)时,你才需要使用ZoneId类。如果不是,你仍然可以使用Calendar类和TimeZone类。

从Calendar获取TimeZone实例

创建TimeZone实例

除了利用Calendar获取TimeZone的实例外,TimeZone类本身提供了自己创建实例的方法。例如getDefault()方法和getTimeZone()方法。

getDefault 基于程序运行时所在的时区创建TimeZone。例如,对于在中国运行的程序,getDefault 基于中国标准时间创建 TimeZone对象,如果程序运行在美国,那么就基于美国时间创建TimeZone对象。

时区的名称,ID和偏移

  • timeZone.getDispalyName()
  • timeZone.getID()
  • timeZone.getOffset(System.currentTimeMillis())

获取时区的显示名称

获取时区的ID

时区的ID通常的表现形式为国家名称/地区名称(但并非完全这样),可以使用TimeZone的静态方法getAvailableIDs()获取可用的时区ID。

获取时区的偏移量

getOffset()以milliseconds的方式返回在指定时区的指定时间和UTC时区的差值。

时区之间的时间转换

利用Calendar类和TimeZone类,可以实现指定时区之间的时间转换。

下面是另一个例子,运行后输出的两个结果是一样的,都是Fri Mar 03 16:55:26 CST 2017,这是一个坑,特别需要注意。

注意:当时区更改之后,如果你使用calendar的getTimeInMillis()方法获取时间戳。你会发现两个不同时区的时间戳是相同的。但是如果使用上面代码中的方法,它们的时间确实是不同的,这很容易造成混乱。

 

转载请注明:Pure nonsense » java每日一练之时间处理(三)使用时区

喜欢 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x