一、TimeZone 类的定义

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

二、TimeZone 类常用方法

getAvailableIDs()

获取Java支持的所有时区 ID

1

2

3System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));

// Asia/Shanghai, Asia/Chongqing, Asia/Hong_Kong, Asia/Macao, ...

getAvailableIDs(int rawOffset)

根据 时间偏移量 来获取时区 ID

1

2

3

4

5

6

7

8// 东八区时间,与标准时间相差8小时

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

// [Asia/Brunei, Asia/Choibalsan, Asia/Chongqing, Asia/Chungking, Asia/Harbin,

// Asia/Hong_Kong, Asia/Irkutsk, Asia/Kuala_Lumpur, Asia/Kuching, Asia/Macao,

// Asia/Macau, Asia/Makassar, Asia/Manila, Asia/Shanghai, Asia/Singapore,

// Asia/Taipei, Asia/Ujung_Pandang, Asia/Ulaanbaatar, Asia/Ulan_Bator,

// Australia/Perth, Australia/West, CTT, Etc/GMT-8, Hongkong, PRC, Singapore]

getDefault()

获取当前系统的默认时区,中国默认为东八区

1

2

3

4System.out.println(TimeZone.getDefault());

// sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,

// dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

setDefault(TimeZone zone)

设置当前系统的默认时区

1

2

3

4

5TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

System.out.println(TimeZone.getDefault());

// sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,

// dstSavings=0,useDaylight=false,transitions=19,lastRule=null]

getTimeZone(String ID)

根据时区 ID 来获取其对应的时区

1

2

3

4System.out.println(TimeZone.getTimeZone("GMT+08:00"));

// sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,

// dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

getTimeZone(ZoneId zoneId)

根据 ZoneId 对象来获取其对应的时区

1

2

3

4System.out.println(TimeZone.getTimeZone(ZoneId.of("GMT+08:00")));

// sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,

// dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

getDisplayName()

获取该 TimeZone 对象的时区名称

1

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

System.out.println(timeZone.getDisplayName()); // 中国标准时间

getDisplayName(Locale locale)

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

1

2

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

System.out.println(timeZone.getDisplayName()); // 中国标准时间

System.out.println(timeZone.getDisplayName(Locale.ENGLISH)); // China Standard Time

getDisplayName(boolean daylight, int style)

获取该 TimeZone 对象的时区名称

daylight

true:指定夏令时名称

false:指定标准时间名称

style

TimeZone.LONG:显示全称

TimeZone.SHORT:显示简称

1

2

3

4TimeZone 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)); // CST (China Standard Time)

getDisplayName(boolean daylight, int style, Locale locale)

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

daylight

true:指定夏令时名称

false:指定标准时间名称

style

TimeZone.LONG:显示全称

TimeZone.SHORT:显示简称

1

2

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

System.out.println(timeZone.getDisplayName()); // 中国标准时间

System.out.println(timeZone.getDisplayName(false, TimeZone.LONG, Locale.ENGLISH)); // China Standard Time

getID()

获取该 TimeZone 对象的时区 ID

1

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

System.out.println(timeZone.getID()); // Asia/Shanghai

setID(String ID)

设置该 TimeZone 对象的时区 ID

1

2

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

timeZone.setID("Asia/Chongqing");

System.out.println(timeZone.getID()); // Asia/Chongqing

getOffset(long date)

获取该时间所在时区的时间偏移量

1

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

System.out.println(timeZone.getOffset(System.currentTimeMillis())); // 28800000

getDSTSavings()

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

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

1

2

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

// 中国没有夏令时,故为0

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

getRawOffset()

获取时间原始偏移量,该值不受夏令时的影响,故称为时间原始偏移量

1

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

System.out.println(timeZone.getRawOffset()); // 28800000

setRawOffset(int offsetMillis)

设置时间原始偏移量

1

2

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

timeZone.setRawOffset(25200000);

System.out.println(timeZone.getRawOffset()); // 25200000

toZoneId()

将 TimeZone 对象转换为 ZoneId 对象

1

2

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

ZoneId zoneId = timeZone.toZoneId();

System.out.println(zoneId); // Asia/Shanghai

useDaylightTime()

查询此时区是否使用夏令时

1

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

System.out.println(timeZone.useDaylightTime()); // false

inDaylightTime(Date date)

查询给定的日期是否在此时区的夏令时中

1

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

System.out.println(timeZone.inDaylightTime(new Date())); // false

hasSameRules(TimeZone other)

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

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

1

2

3TimeZone timeZone1 = TimeZone.getTimeZone("Asia/Shanghai");

TimeZone timeZone2 = TimeZone.getTimeZone("Asia/Chongqing");

System.out.println(timeZone1.hasSameRules(timeZone2)); // true

java settimezone_Java时间处理2----时区TimeZone类方法探究(Java8以前)相关推荐

  1. java不同时区时间转换,Java不同时区(timezone)之间时间转换

    最近出现一个问题是这样的 我们的系统在国外打印的日志时间由于时差关系和国内不一致 看起来不方便 希望国外的日志和国内保持一致 即 需要对不同时区的时间做转换调整 统一为国内时间. 一.关于时区的一些概 ...

  2. java 不同时区时间转换_Java对世界不同时区timezone之间时间转换的处理方法

    最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间. 一.关于时区的一些概 ...

  3. java 时间纪元与时区介绍

    时间纪元 所谓的"时间纪元"就是1970年1月1日0时0分0秒,指的是开始的时间.比如Java类代码: Date date = new Date(0); System.out.pr ...

  4. pandas使用to_datetime函数将时间字符串转化为时间对象、使用dt.tz_localize为转化后的时间对象添加时区信息(timezone)

    pandas使用to_datetime函数将时间字符串转化为时间对象.使用dt.tz_localize为转化后的时间对象添加时区信息(timezone) 目录 pandas使用to_datetime函 ...

  5. Java 8时间和日期API 20例

    本文由  ImportNew -  Sandy 翻译自  javarevisited.欢迎加入 翻译小组.转载请见文末要求. 伴随lambda表达式.streams以及一系列小优化,Java 8 推出 ...

  6. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  7. java zoneid 中国_关于时区:Java 8 Time API – ZonedDateTime – 在解析时指定默认的ZoneId...

    我正在尝试编写一个泛型方法来返回ZonedDateTime给定日期为String及其格式. 如果String未在日期String中指定,我们如何使ZonedDateTime使用默认ZoneId? 它可 ...

  8. 一文告诉你Java日期时间API到底有多烂

    前言 你好,我是A哥(YourBatman). 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是"史上最烂"的,要有也只有"史上更烂". 日期是商 ...

  9. java日期时间详解

    一.简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的位置比如joda. 文章主要对java日期处理的详解,用1.8可以不用joda. 1. 相关概念 首先我们对一些基 ...

最新文章

  1. 1042 字符统计(PAT乙级、C++)(超详细)
  2. 【LeetCode笔记】55. 跳跃游戏(Java、贪心法)
  3. 鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...
  4. 【英语学习】【Level 07】U06 First Time L5 A Different City
  5. 8599元起!三星Galaxy Z Fold3/Flip3 5G折叠手机国行即将发货
  6. 数据分析师就是个 SQL boy?
  7. main函数的argc和argv
  8. Struts2_01_开发过程与实例说明
  9. 操作系统课程设计-文件管理系统(JAVA)
  10. 【概率论】复习资料(手写复习)
  11. Flash Lite作为S40和S60系列上的特性出现在技术规范中
  12. dpdk Ipv4组包逻辑解析
  13. stm32增加固件库工程
  14. web自动化你需要知道的
  15. 如何让自己成为优秀员工?
  16. win10检查更新后,蓝牙没了,卸载usb也没有用,蓝牙 未知usb设备 设备描述符请求失败
  17. kotlin中mainactivity无法直接调用xml中的控件_个推TechDay广州站:使用Kotlin演进安卓开发生态...
  18. 这,不是我想要的生活
  19. P2P视频聊天技术分析
  20. WordPress邮箱验证(上)

热门文章

  1. 机器学习算法总结之Boosting:Boosting Tree、GBDT
  2. java swing 图片切换_在一个界面中要实现图片切换,用java要肿么实现??
  3. 使用mysql-proxy读写分离时的注意事项_mysql-proxy中Admin Plugin的使用以及读写分离的问题...
  4. C++中应用于for循环的auto机制,有引用和非引用两种操作
  5. 虹软人脸识别SDK - Java服务端的那些事
  6. springcloud21---Config-bus实现配置自动刷新
  7. 关于servlet中出现GET方法不能应用于此url的解决办法
  8. 第十九:如何在Windows下把Allure2与Jenkins的集成生成自定义的测试报告(重点超详细)
  9. zed相机拆机_TX2入门教程硬件篇-外接双目相机ZED
  10. lisp 读取dwg 统计信息_用阿里云交易和账单管理API实现MaxCompute费用对账分摊统计...