时区计算,冬夏令时, 计算历史某一刻的某地区的时区

news/2024/11/14 15:19:47/文章来源:https://www.cnblogs.com/loveCrane/p/18545592

首先来聊聊冬夏令时

冬令时和夏令时是为了节约能源和充分利用光照资源而设立的时间制度。在夏季,许多国家和地区会将时钟拨快一小时,称为夏令时,以便让人们早起早睡,减少照明用电。而在冬季,时钟会拨回标准时间,称为冬令时。‌

历史背景和实施国家

夏令时的概念最早由新西兰昆虫学家George Vernon Hudson在1895年提出,但未得到广泛响应。1907年,英国建筑师威廉·维莱特向英国议会提出了夏令时的构思,但未被采纳。德国于1916年首次正式使用夏令时,随后英国、法国和俄罗斯也开始执行。目前,全世界有近110个国家每年实行夏令时。

中国的实施情况

中国在1986年至1991年间曾实行夏令时制度。具体做法是每年从4月中旬的第一个星期日起将时钟拨快一小时,称为夏令时开始;到9月中旬的第一个星期日再拨回一小时,称为夏令时结束。然而,自1992年起,中国暂停实行夏令时

 

java 中获取时区的方式

1指定时区,这种就会忽略夏令时  因为指定了 -4

TimeZone tz = TimeZone.getTimeZone("GMT-04:00");

2指定地点城市,会自动计算夏令时

TimeZone tz = TimeZone.getTimeZone("America/New_York");

以new york为例

2024年 11 月 3 号调整了冬令时, 时区由-4 调整为 -5 

参考网站:

https://time.is/

 

我们来实际计算下 2024-11-02 13:00:00 的时区

    public static void main(String[] args) throws ParseException {//1指定时区为纽约ZoneId newYorkZoneId = ZoneId.of("America/New_York");TimeZone tz = TimeZone.getTimeZone(newYorkZoneId);//初始化一个时间格式化,并指定纽约时区FastDateFormat format = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", tz);//使用纽约时区,反序列化一个时间Date date = format.parse("2024-11-02 13:00:00");//获取时区ZonedDateTime pastTimeInNewYork = ZonedDateTime.ofInstant(date.toInstant(), newYorkZoneId);System.out.println("过去时间点的时区信息: " + pastTimeInNewYork.getOffset());}

 上面结果输出为


过去时间点的时区信息: -04:00

 

当我们将反序列化的时间 修改为 11月3号,

可以看到这里同样是纽约, 3号的时区已经变为-5, 因为调整了冬令时

 

 

这样的话我们就可以得到某个城市,某个时刻的  具体时区,这样就可以 准确的进行时间转换, 比如我们是东八区, 没有冬夏令时,  我们需要将时间转换为纽约时间

 

拓展:
介绍下时间转换方法

/*** 将sourceDate转换成指定时区的时间** @param sourceDate* @param sourceTimezone sourceDate所在的时区* @param targetTimezone 转化成目标时间所在的时区* @return*/
public static Date convertTimezone(Date sourceDate, TimeZone sourceTimezone, TimeZone targetTimezone) {Calendar calendar = Calendar.getInstance();//原时间long sourceTime = sourceDate.getTime();calendar.setTimeZone(sourceTimezone);calendar.setTimeInMillis(sourceTime);//获取源时区的到UTC的时区差int sourceZoneOffset = calendar.get(Calendar.ZONE_OFFSET);//目标时区calendar.setTimeZone(targetTimezone);calendar.setTimeInMillis(sourceTime);//获取目标时区的到UTC的时区差int targetZoneOffset = calendar.get(Calendar.ZONE_OFFSET);long targetTime = sourceTime + targetZoneOffset - sourceZoneOffset;return new Date(targetTime);
}

请注意,上面的targetTimezonetimeZone一定要是 根据城市获取的,而不是固定偏移量的

TimeZone.getTimeZone("America/New_York")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【跟着阿舜学音乐-笔记】1.09音程与协和度

音程 音程是指两个音之间的距离,即一个音到另一个音经过了多少个音高的音高单位。 其中,所经历的音高单位的数量叫做音数。具有不同音数的音之间的距离叫做度。 音程的下方较低的音称为根音(该说法也用于和弦中,指原位中最低的音),上方较高的音称为冠音。以下给出各音程的…

find me-WP

首先给了四张图片第一张宽高有问题修复一下,之后感觉不对劲少了IDAT,修复一下 49444154就好了 修复好第一张图片之后发现了二维码ZmxhZ3s0X3 在第二张图片发现了压缩包提取出来但解压不了 需要把7Z换成PK解压之后在618发现1RVcmVfc 第四张图片发现cExlX1BsY 第五张Yzcllfc0lN…

某大型商超客户采购数据分析(Spark实战)

写了一些使用sparksql以及spark机器学习来进行数据分析的东西,希望能给大家做一些参考项目需求:对某大型商超客户采购数据集进行数据分析 数据来源:https://www.heywhale.com/mw/dataset/656069b19a74cc18269207c4/content首先使用Spark读入数据集,读入文件前要先将文件转为…

2024鹏城杯-re

Rafflesia 先去花指令 a = H@^jHwpsH)[jH{M/\\tBBK_|-O{W.iJZ7\\)|~zaB^H+Lwv{SS|-j@\\_[Y flag = for i in range(len(a)):flag += chr(ord(a[i])^0x18) print(flag)PXFrPohkP1CrPcU7DlZZSGd5WcO6qRB/D1dfbyZFP3ToncKKd5rXDGCA 接着是tls改了表 HElRNYGmBOMWnbDvUCgcpu1QdPqJ…

IDEA如何创建web项目及tomcat设置等

一、Java EE插件启用 1.在启动IDEA时,点击右下角并进入Plugins设置2.选择Java EE相关插件,点击OK然后重启二、创建Web项目 1.点击File->New Project,点击Java Enterprise,勾选web Application。确保已选择正确的jdk2.输入项目名称和存放路径,点击Finish完成三、设置tomca…

.net core生成二维码

安装Net.Codecrete.QrCodeGenerator dotnet add Net.Codecrete.QrCodeGenerator var qr = QrCode.EncodeText("https://baidu.com", QrCode.Ecc.Medium); var bytes = qr.ToBmpBitmap(0, 5, 0, 16777215);//5表示单个像素大小,可按需调整,0表示背景色白色,1677721…

Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon excerpt: schema:beforeWrite 钩子是 Vite 提供的一个功能强大的生命周期钩子,允许开发者在 JSON Schema 被写入之前执行自定义操作。利用这个钩子,您可以…

最新项目管理软件趋势,2024年全面盘点11款工具!

2024年,项目管理软件领域继续朝着更加智能化、协同化和自动化的方向发展,满足不同规模企业的需求。随着企业对灵活性、透明度和效率的要求不断提高,项目管理软件在功能和使用方式上持续创新。以下是2024年项目管理软件的最新趋势,并涵盖了国内外多款主流项目管理工具。 1. …

PMP百科网精选:项目管理软件怎么选?这里有答案!

在选择项目管理软件时,企业和项目经理需要综合考虑多个因素,以确保所选的软件能够有效支持项目的各个阶段并满足团队的具体需求。PMP百科网的精选内容通常会根据项目管理的实际需求来推荐适合的软件。以下是选择项目管理软件时应该考虑的几个关键因素: 1. 项目的规模和复杂性…

设备管理系统功能拆解——设备巡检管理

工厂生产过程中,设备的稳定性和可靠性非常重要,设备巡检管理则是确保设备正常运行的关键环节。如果生产线上某台设备在没有任何预兆的情况下出现故障,可能会导致整条生产线停滞,影响后续的交付与客户满意度。 而设备巡检管理则是通过定期和系统性的检查,确保设备在运行过程…

DisplayPort的TYPE-C信号定义和配置功能描述

DisplayPort的备用模式重新配置TYPE-C连接器上的某些引脚以支持其他协议.例如DisplayPort备用模式的USB-C型连接器引脚分配。 VESA规范中列出了不同的解决方案,这些解决方案通过特定的连接器插脚和电线支持USB Type-C上的DP。 24引脚的USB Type-C连接器可以分为七个功能类型:…

OSS对象存储服务器(存储桶)

因公司业务的需要,需要做大批量数据存储,因而分布式存储提上日程,研究了很久发现,使用第三方或云存储确实是一个不错的选择,以下是我介绍的一个比较好用的存储桶,支持私有化部署。 1.首先,此存储软件为:MinIo,如果商用,请注意版权问题。 2.在Windows的环境下,请尽量使…