1) 一直很困惑,用时区id和时区名字获取的时区信息有啥区别。
于是以洛杉矶时区(西八区)为例,写了下面的代码,测试下两者获取的时区信息的区别:


import java.util.TimeZone;public class TimeUtils {public static void main(String[] args){TimeZone timeZone = TimeZone.getTimeZone("GMT-8:00");TimeZone timeZone1 = TimeZone.getTimeZone("America/Los_Angeles");System.out.println(timeZone.getDSTSavings());System.out.println(timeZone.getID());System.out.println(timeZone.getRawOffset());System.out.println(timeZone.getDisplayName());System.out.println();System.out.println(timeZone1.getDSTSavings());System.out.println(timeZone1.getID());System.out.println(timeZone1.getRawOffset());System.out.println(timeZone1.getDisplayName());}}

运行结果如下:

0
GMT-08:00
-28800000
GMT-08:00

3600000
America/Los_Angeles
-28800000
太平洋标准时间

从上面的结果可以看到"GMT-8:00"获取不到夏令时偏移,但是"America/Los_Angeles"可以获取到夏令时偏移量。

2)进一步测试发现,两个时区对同一个时间进行解析获取到UTC 时间戳是不一样的,进入夏令时时后者比前者少了3600000毫秒(夏令时的值),不进入夏令时时两者则相等。

这说明java,在获取时间戳时,会根据时区里的夏令时偏移自动减去多余的偏移量,获取到正确的UTC时间戳

代码如下:

package com.zte;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;public class TimeUtils {public static void main(String[] args) throws ParseException {TimeZone timeZone = TimeZone.getTimeZone("GMT-8:00");TimeZone timeZone1 = TimeZone.getTimeZone("America/Los_Angeles");System.out.println(timeZone.getDSTSavings());System.out.println(timeZone.getID());System.out.println(timeZone.getRawOffset());System.out.println(timeZone.getDisplayName());System.out.println();System.out.println(timeZone1.getDSTSavings());System.out.println(timeZone1.getID());System.out.println(timeZone1.getRawOffset());System.out.println(timeZone1.getDisplayName());System.out.println();System.out.println("获取标准时间的差异,进入夏令时:");String time = "2020-05-20 04:28:00";SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");simpleDateFormat.setTimeZone(timeZone);SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");simpleDateFormat1.setTimeZone(timeZone1);System.out.println(simpleDateFormat.parse(time).getTime());System.out.println(simpleDateFormat1.parse(time).getTime());System.out.println("获取标准时间的差异,没有进入夏令时:");time = "2020-02-20 04:28:00";System.out.println(simpleDateFormat.parse(time).getTime());System.out.println(simpleDateFormat1.parse(time).getTime());}}

输出结果如下:

0
GMT-08:00
-28800000
GMT-08:00

3600000
America/Los_Angeles
-28800000
太平洋标准时间

获取标准时间的差异,进入夏令时:
1589977680000
1589974080000
获取标准时间的差异,没有进入夏令时:
1582201680000
1582201680000

TimeZone.getTimeZone(GMT-8:00)和TimeZone.getTimeZone(America/Los_Angeles)的区别相关推荐

  1. 世界时区: UTC/GMT+08:00 东八区

    世界时区: UTC/GMT+08:00  东八 转载▼ 区 UTC/GMT+08:00  东八区: 112度30分-127度30分 东8时区  香港新加坡 (GMT+ 8) 中国标准时间(台湾:中原标 ...

  2. 安卓将数据库里Fri Jun 22 19:50:49 GMT+08:00 2018格式转化为正常格式

    在安卓数据库存储时间的时候,直接存储的New Date(),然而当读取数据库的时候,读出来的字符串为Fri Jun 22 19:50:49 GMT+08:00 2018,当然我们想要的是18-06-2 ...

  3. GMT时间格式转换(Mon Feb 13 08:00:00 GMT+08:00 2012)

    普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小 ...

  4. Android7.1选择时区由默认的GMT+00:00改为GMT+08:00中国标准时间

    device/qcom/msm8937_64/msm8937_64.mk 增加 PRODUCT_PROPERTY_OVERRIDES += \ ro.product.locale.language=z ...

  5. UTC时间、GMT时间、本地时间、Unix时间戳的区别

    1.UTC时间 与 GMT时间 UTC时间的英文全称:Universal Time Coordinated,中文名称:协调世界时.俗的理解为,这个时间是全世界通用的,即全世界都公用的一个时间.可以认为 ...

  6. 正确处理时间和时区问题(java+mysql)

    日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明白如何正确地处理日期和 ...

  7. JAVA如何正确地处理时间/时区

    日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明白如何正确地处理日期和 ...

  8. 关于java时区转换夏令时问题及解决办法

    关于中国的夏令时问题:参考另外一篇: https://blog.csdn.net/u011165335/article/details/78924498 这里:主要讲的是: 在夏令时结束的时候,jav ...

  9. Java处理时间/时区/普通时间与时间戳的转换

    将时间转换为时间戳: /* * 将时间转换为时间戳*/ public static String dateToStamp(String s) throws ParseException{String ...

最新文章

  1. Matlab与线性代数 -- 逆矩阵
  2. 二叉树的建立和遍历的各种问题
  3. 树莓派:关于linux内核
  4. 第12个双11,天猫的“造新”运动
  5. android 定义固定数组,Android 图片数组定义和读取
  6. Linux设备模型(9)_device resource management ---devm申请空间【转】
  7. 微信js-sdk集成小结
  8. Confluence 6 附件存储配置
  9. IAR 软件的安装教程
  10. pdf2swf process阻塞问题
  11. 学会如何带领一个团队
  12. 麒麟服务器系统编译raid驱动
  13. 推荐一个3D建模工具集
  14. 计算机网络基础总结(超全)
  15. Java 12 来了,我们应该采用嘛?
  16. oracle核销预付账款,AP模块外币预付款核销的CNY尾差问题
  17. 2022机修钳工(高级)考试题库模拟考试平台操作
  18. 【读点论文】FaceNet: A Unified Embedding for Face Recognition and Clustering 人脸向量映射到一个特定空间后成为一种集成系统
  19. linux下centos生成火车动画sl命令
  20. 语言c1和c2,工程绘图c2(机械制图中C1表示什么?它和C2的区别是什么?)

热门文章

  1. python3对拉勾数据进行可视化分析的方法详解
  2. 全网最详细的介绍ChatGPT:包括ChatGPT原理、应用、如何试用以及回答ChatGPT能否让程序员失业
  3. matlab 已实现极差波动,关于黄金期货论文范文写作 中国黄金期货价格SVR智能预测相关论文写作资料...
  4. 16.网络《果壳中的c#》
  5. css filter blur 白边,如何解决CSS3毛玻璃效果blur有白边的问题
  6. 五年IT五股东风 吹奏一曲SaaS“东风破”
  7. 一件衣服95元,如果消费满300元,可以打八五折。输入购买衣服数,输出需要支付的金额。
  8. Lucene之——搜索实例
  9. PMBOK2012的几种合同形式 PPP和BOT
  10. 郭炜-C语言程序设计-程序设计与算法(一)-第三周