TimeZone.getTimeZone(GMT-8:00)和TimeZone.getTimeZone(America/Los_Angeles)的区别
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)的区别相关推荐
- 世界时区: UTC/GMT+08:00 东八区
世界时区: UTC/GMT+08:00 东八 转载▼ 区 UTC/GMT+08:00 东八区: 112度30分-127度30分 东8时区 香港新加坡 (GMT+ 8) 中国标准时间(台湾:中原标 ...
- 安卓将数据库里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 ...
- GMT时间格式转换(Mon Feb 13 08:00:00 GMT+08:00 2012)
普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小 ...
- Android7.1选择时区由默认的GMT+00:00改为GMT+08:00中国标准时间
device/qcom/msm8937_64/msm8937_64.mk 增加 PRODUCT_PROPERTY_OVERRIDES += \ ro.product.locale.language=z ...
- UTC时间、GMT时间、本地时间、Unix时间戳的区别
1.UTC时间 与 GMT时间 UTC时间的英文全称:Universal Time Coordinated,中文名称:协调世界时.俗的理解为,这个时间是全世界通用的,即全世界都公用的一个时间.可以认为 ...
- 正确处理时间和时区问题(java+mysql)
日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明白如何正确地处理日期和 ...
- JAVA如何正确地处理时间/时区
日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明白如何正确地处理日期和 ...
- 关于java时区转换夏令时问题及解决办法
关于中国的夏令时问题:参考另外一篇: https://blog.csdn.net/u011165335/article/details/78924498 这里:主要讲的是: 在夏令时结束的时候,jav ...
- Java处理时间/时区/普通时间与时间戳的转换
将时间转换为时间戳: /* * 将时间转换为时间戳*/ public static String dateToStamp(String s) throws ParseException{String ...
最新文章
- Matlab与线性代数 -- 逆矩阵
- 二叉树的建立和遍历的各种问题
- 树莓派:关于linux内核
- 第12个双11,天猫的“造新”运动
- android 定义固定数组,Android 图片数组定义和读取
- Linux设备模型(9)_device resource management ---devm申请空间【转】
- 微信js-sdk集成小结
- Confluence 6 附件存储配置
- IAR 软件的安装教程
- pdf2swf process阻塞问题
- 学会如何带领一个团队
- 麒麟服务器系统编译raid驱动
- 推荐一个3D建模工具集
- 计算机网络基础总结(超全)
- Java 12 来了,我们应该采用嘛?
- oracle核销预付账款,AP模块外币预付款核销的CNY尾差问题
- 2022机修钳工(高级)考试题库模拟考试平台操作
- 【读点论文】FaceNet: A Unified Embedding for Face Recognition and Clustering 人脸向量映射到一个特定空间后成为一种集成系统
- linux下centos生成火车动画sl命令
- 语言c1和c2,工程绘图c2(机械制图中C1表示什么?它和C2的区别是什么?)
热门文章
- python3对拉勾数据进行可视化分析的方法详解
- 全网最详细的介绍ChatGPT:包括ChatGPT原理、应用、如何试用以及回答ChatGPT能否让程序员失业
- matlab 已实现极差波动,关于黄金期货论文范文写作 中国黄金期货价格SVR智能预测相关论文写作资料...
- 16.网络《果壳中的c#》
- css filter blur 白边,如何解决CSS3毛玻璃效果blur有白边的问题
- 五年IT五股东风 吹奏一曲SaaS“东风破”
- 一件衣服95元,如果消费满300元,可以打八五折。输入购买衣服数,输出需要支付的金额。
- Lucene之——搜索实例
- PMBOK2012的几种合同形式 PPP和BOT
- 郭炜-C语言程序设计-程序设计与算法(一)-第三周