惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
V
Visual Studio Blog
雷峰网
雷峰网
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享 Hexo-theme-butterfly修改调整记录教程 | Java技术经验分享
Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java...
文章作者: LarsCheng · 2019-11-22 · via Java技术经验分享

本文转载于CSDN博主「Gene Xu」
原文链接:https://blog.csdn.net/goodbye_youth/article/details/81807273

TimeZone 类位于 java.util 包中,是一个抽象类,主要包含了对于时区的各种操作,可以进行计算时间偏移量或夏令时等操作

二、TimeZone 类常用方法

getAvailableIDs()

  • 获取Java支持的所有时区 ID
1
2
3
System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));


getAvailableIDs(int rawOffset)

  • 根据 时间偏移量 来获取时区 ID
1
2
3
4
5
6
7
8

System.out.println(Arrays.toString(TimeZone.getAvailableIDs(8*60*60*1000)));






getDefault()

  • 获取当前系统的默认时区,中国默认为东八区
1
2
3
4
System.out.println(TimeZone.getDefault()); 



setDefault(TimeZone zone)

  • 设置当前系统的默认时区
1
2
3
4
5
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
System.out.println(TimeZone.getDefault());



getTimeZone(String ID)

  • 根据时区 ID 来获取其对应的时区
1
2
3
4
System.out.println(TimeZone.getTimeZone("GMT+08:00"));



getTimeZone(ZoneId zoneId)

  • 根据 ZoneId 对象来获取其对应的时区
1
2
3
4
System.out.println(TimeZone.getTimeZone(ZoneId.of("GMT+08:00")));



getDisplayName()

  • 获取该 TimeZone 对象的时区名称
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getDisplayName());

getDisplayName(Locale locale)

  • 获取该 TimeZone 对象的时区名称,并根据 Locale 对象进行国际化
1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getDisplayName());
System.out.println(timeZone.getDisplayName(Locale.ENGLISH));

getDisplayName(boolean daylight, int style)

  • 获取该 TimeZone 对象的时区名称

  • daylight

    • true:指定夏令时名称
    • false:指定标准时间名称
  • style

    • TimeZone.LONG:显示全称
    • TimeZone.SHORT:显示简称
1
2
3
4
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getDisplayName());
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG));
System.out.println(timeZone.getDisplayName(false, TimeZone.SHORT));

getDisplayName(boolean daylight, int style, Locale locale)

  • 获取该 TimeZone 对象的时区名称,并根据 Locale 对象进行国际化

  • daylight

    • true:指定夏令时名称
    • false:指定标准时间名称
  • style

    • TimeZone.LONG:显示全称
    • TimeZone.SHORT:显示简称
1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getDisplayName());
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG, Locale.ENGLISH));

getID()

  • 获取该 TimeZone 对象的时区 ID
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getID());

setID(String ID)

  • 设置该 TimeZone 对象的时区 ID
1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
timeZone.setID("Asia/Chongqing");
System.out.println(timeZone.getID());

getOffset(long date)

  • 获取该时间所在时区的时间偏移量
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getOffset(System.currentTimeMillis()));

getDSTSavings()

  • 在夏令时规则生效时,返回相对于标准时间提前的毫秒数

  • 如果此时区不实施夏令时,则为 0

1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");

System.out.println(timeZone.getDSTSavings());

getRawOffset()

  • 获取时间原始偏移量,该值不受夏令时的影响,故称为时间原始偏移量
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.getRawOffset());

setRawOffset(int offsetMillis)

  • 设置时间原始偏移量
1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
timeZone.setRawOffset(25200000);
System.out.println(timeZone.getRawOffset());

toZoneId()

  • 将 TimeZone 对象转换为 ZoneId 对象
1
2
3
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
ZoneId zoneId = timeZone.toZoneId();
System.out.println(zoneId);

useDaylightTime()

  • 查询此时区是否使用夏令时
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.useDaylightTime());

inDaylightTime(Date date)

  • 查询给定的日期是否在此时区的夏令时中
1
2
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
System.out.println(timeZone.inDaylightTime(new Date()));

hasSameRules(TimeZone other)

  • 如果两时区仅时区 ID 不同,但具有相同的规则和时间偏移量,则返回 true

  • 如果另一个时区为空,则返回 false

1
2
3
TimeZone timeZone1 = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Chongqing");
System.out.println(timeZone1.hasSameRules(timeZone2));