当前位置: 首页 > news >正文

Java 中的 ZoneOffset

介绍

在我们的这个世界上因为地球是圆的,所以每个国家都会有自己特定的时区。

时区在我们对时间的使用上扮演了非常重要的角色。但又因为时区的存在,又给我们带来了很多的麻烦,比如北美地区使用的夏令时和中国统一使用东 8 区的时间等。

2025-01-16_10-24-57

当这些时间在我们计算机中进行体现的时候就会给我们带来不少的麻烦,为了解决这些麻烦,Java 提供了一些 API 来进行处理,比如用到的 DateTimeDateTime

我们都知道,Java 的时间处理因为 API 的使用会变得非常的繁琐,所以在新的版本 Java 中,Java 尝试解决这个问题,为此开始提供 ZoneIdZoneOffset API 来管理时区。

在本文中,我们将会对 ZoneIdZoneOffset 进行一些探讨,同时也对 DateTime 类进行一些探索。

ZoneIdZoneOffset

在 JSR-310 发布的版本中,Java 添加了一些 API 用来管理日期,时间和有时区的时间。

ZoneIdZoneOffset 类做为上面更新的一部分也同时添加到了 Java 中。

ZoneId

*ZoneId 在 Java 中被用来表示时区,例如 ‘Europe/Paris‘.

针对 ZoneId 有 2 个实现,第一个实现是针对 GMT/UTC 来计算偏移量。

第二个实现为使用距离的地理区域,这会针对 GMT/UTC 对比来进行一系列的计算。

让我们来创建一个 Berlin, Germany 的 ZoneId 实例。

ZoneId zone = ZoneId.of("Europe/Berlin");

针对中国可以使用的时间定义为标准北京时间。

        ZoneId zoneId = ZoneId.of("Asia/Shanghai");

但使用的时间字符串为上海。

ZoneOffset

ZoneOffset 集成了 ZoneId 同时来定义了当前使用的时区针对 GMT/UTC 的偏移量,例如:+02:00。

这就意味这个这个数字表示的是针对 UTC 标准时间使用的固定小时和分钟数。

        LocalDateTime now = LocalDateTime.now();ZoneId zone = ZoneId.of("Asia/Shanghai");ZoneOffset zoneOffSet = zone.getRules().getOffset(now);logger.debug("zoneOffSet: {}", zoneOffSet);

上面代码的输出为:

09:13:25.045 [main] DEBUG com.ossez.datetime.DateTimeZoneUnitTest - zoneOffSet: +08:00

因为北京使用的是东八区的时间。

针对同一个国家可能有 2 个针对 UTC 时间的偏移量——这些国家主要是使用夏令时的国家。比如说美国就是一个使用夏令时的国家。

因此,针对这些国家 ZoneOffset 就会有 2 个实现了,具体需要参考 LocalDateTime* API 中的实现。

DateTime 类

下一个,让我们来讨论下 DateTime 类,这个类实际上将会使用 ZoneIdZoneOffset

ZonedDateTime

ZonedDateTime 是不可变(immutable )的实现,这个用来输出一个基于 ISO-8601 表达方式的时间。

例如: 2007-12-03T10:15:30+01:00 Europe/Pari

一个 ZonedDateTime 将会表达有 3 个部分,分别为LocalDateTimeZoneIdZoneOffset

这个类将会保存有所有的日期和时间字段来精确的表达时间,时区和时区偏移量。

我们用这个来处理模糊的本地时间。

例如:, ZonedDateTime 可以保存值 “2nd October 2007 at 13:45.30.123456789 +02:00 in the Europe/Paris time-zone”。

让我们使用 ZonedDateTime 来显示当前的时间。

    @Testpublic void ZonedDateTime_out() {ZoneId zone = ZoneId.of("Asia/Shanghai");ZonedDateTime date = ZonedDateTime.now(zone);logger.debug("date: {}", date);}

上面程序的输出为:

09:32:04.549 [main] DEBUG com.ossez.datetime.DateTimeZoneUnitTest - date: 2025-01-16T22:32:04.547368100+08:00[Asia/Shanghai]

从实例化的输出来看,保留了非常多的时间信息。

我的计算机是现在东部时间,可以看到获得的实例已经转换成了北京时间。

ZonedDateTime 同时还提供了内置函数来从一个时区转换为另外的一个时区。

ZonedDateTime destDate = sourceDate.withZoneSameInstant(destZoneId);

OffsetDateTime

OffsetDateTime 是不可变的的一个日期时间,这个日期时间使用的是针对 UTC 的偏移量来进行保存的,同样使用 ISO-8601 格式。

例如:2007-12-03T10:15:30+01:00.

这个类将会保存有所有的日期和时间字段来精确的表达时间,时区和时区偏移量。

例如:OffsetDateTime 可以寸尺值 “2nd October 2007 at 13:45.30.123456789 +02:00”。

让我们来获得针对 GMT/UTC 2 小时偏移量的 OffsetDateTime

ZoneOffset zoneOffSet= ZoneOffset.of("+02:00");
OffsetDateTime date = OffsetDateTime.now(zoneOffSet);

OffsetTime

OffsetTime 是不可变的的一个时间。

通常这个时间使用 hour-minute-second-offset 来进行表达,在 ISO-8601 日历系统中将会输出为:: 10:15:30+01:00

这个类只会存储时间,不会对日期进行存储。

可以使用 “13:45.30.123456789+02:00” 来对其初始化。

让我们来获得 OffsetTime 2 个时区的偏离量:

ZoneOffset zoneOffSet = ZoneOffset.of("+02:00");
OffsetTime time = OffsetTime.now(zoneOffSet);

结论

ZoneOffset 通常用来处理针对 GMT/UTC 不同时区的偏移量。

同时 ZoneIdZoneOffset 不会单独使用,通常会结合 DateTime 的时间类来使用。

例如 Java 中使用的 ZonedDateTime, OffsetDateTime, 和 OffsetTime

Java 中的 ZoneOffset - Java - iSharkFly介绍在我们的这个世界上因为地球是圆的,所以每个国家都会有自己特定的时区。 时区在我们对时间的使用上扮演了非常重要的角色。但又因为时区的存在,又给我们带来了很多的麻烦,比如北美地区使用的夏令时和中国统一使用东 8 区的时间等。 当这些时间在我们计算机中进行体现的时候就会给我们带来不少的麻烦,为了解决这些麻烦,Java 提供了一些 API 来进行处理,比如用到的 Date,Time 和 DateTime。 我们都知道,Jav…icon-default.png?t=O83Ahttps://www.isharkfly.com/t/java-zoneoffset/16803

相关文章:

Java 中的 ZoneOffset

介绍 在我们的这个世界上因为地球是圆的,所以每个国家都会有自己特定的时区。 时区在我们对时间的使用上扮演了非常重要的角色。但又因为时区的存在,又给我们带来了很多的麻烦,比如北美地区使用的夏令时和中国统一使用东 8 区的时间等。 当…...

amis模板语法、数据映射与表达式

模板字符串 表达式中获取变量 可以支持在普通文本中&#xff0c;使用数据映射语法&#xff1a;${xxx} 获取数据域中变量的值 "Hello ${text}"渲染 html 使用数据映射语法&#xff1a;${xxx} 获取数据域中变量的值&#xff0c;并渲染 HTML "<h1>Hello<…...

频域增强通道注意力机制EFCAM模型详解及代码复现

背景与动机 在深度学习领域,如何有效处理时间序列数据一直是一个重要的研究方向。近年来, 频域分析技术 在时间序列处理中展现出了巨大潜力,特别是离散余弦变换(DCT)因其能够高效捕捉低频信息并避免高频噪声干扰而受到广泛关注。 FECAM模型的开发正是基于这一背景,旨在…...

GitLab 国际站中国大陆等地区停服,如何将数据快速迁移到云效

代码托管平台 GitLab 国际站&#xff08;GitLab.com&#xff09;近日发布公告&#xff0c;官宣即将停止对中国大陆、香港、澳门地区的用户账号提供服务&#xff0c;并提供 60 天过渡期自行迁移账户数据&#xff0c;超期未迁移的账号可能会被 GitLab 清除。这一重要决策引起了全…...

BPG图像库和实用程序(译)

1)快速介绍 编辑Makefile以更改编译选项&#xff08;默认编译选项对于Linux应该是OK的&#xff09;。输入make来编译&#xff0c;输入make install来安装编译后的二进制文件。bpgview&#xff1a;为了编译它&#xff0c;你需要安装SDL和SDL_image库。Emscripten的使用&#xff…...

简述1个业务过程:从客户端调用接口,再到调用中间件(nacos、redis、kafka、feign),数据库的过程

以下是一个常见的业务过程示例&#xff0c;展示了从客户端调用接口&#xff0c;再到调用中间件&#xff08;Nacos、Redis、Kafka、Feign&#xff09;和数据库的过程&#xff1a; 假设我们有一个电商系统&#xff0c;客户端要查询某个商品的详细信息&#xff0c;这个商品信息可…...

01.02、判定是否互为字符重排

01.02、[简单] 判定是否互为字符重排 1、题目描述 给定两个由小写字母组成的字符串 s1 和 s2&#xff0c;请编写一个程序&#xff0c;确定其中一个字符串的字符重新排列后&#xff0c;能否变成另一个字符串。 在这道题中&#xff0c;我们的任务是判断两个字符串 s1 和 s2 是…...

什么是.NET中的反射,它有哪些应用场景

反射是.NET框架提供的一种强大的机制&#xff0c;它允许程序在运行时查询和操作对象的类型信息。以下是对.NET中反射的详细解释及其应用场景&#xff1a; 一、反射的定义 在.NET中&#xff0c;所有类型的信息&#xff08;包括类、结构、委托、接口、枚举等以及它们的成员信息…...

Linux离线部署ELK

文章目录 前期准备开始安装安装elastic search安装logstash安装kibana 配置ELK配置ElasticSearch配置logstash配置kibana 启动ELK启动命令启动测试 设置ELK策略创建ILM策略将ILM策略与日志index关联查看索引是否被ILM策略管理 前期准备 ELK包含三部分软件 ElasticSearch用作搜…...

解决 chls.pro/ssl 无法进入问题

使用charles的xdm不知道有没有遇到这样的问题。手机上访问 chls.pro/ssl 就始终进不去了… 各种检查&#xff0c;ip地址、证书&#xff0c;ssl设置等等都正常&#xff0c;就是进不去。 在一位好心人的提醒下得到了一个解决办法。那就是换一个地址 最新地址是: charlesproxy…...

Rust 游戏开发框架指南

Rust 游戏开发框架指南 主流游戏引擎 1. Bevy 最受欢迎的 Rust 游戏引擎之一&#xff0c;基于 ECS&#xff08;实体组件系统&#xff09;架构。 特点&#xff1a; &#x1f680; 高性能 ECS 系统&#x1f4e6; 热重载支持&#x1f3a8; 现代渲染器&#x1f50a; 内置音频系…...

hadoop3.3和hive4.0安装——单节点

hadoop3.3x和hive4.0安装部署 为什么我要安装hive4.0&#xff0c;因为阿里云镜像只有hive4.0 软件相互兼容性版本 系统centos7 uname -a如果内核3.0以上可以用 安装jdk1.8以上的版本&#xff08;配置好环境变量&#xff09; hadoop3.3.x与hive4.0.x 创建目录 mkdir -p /us…...

centos安装golang

1.下载golang golang所有版本网址 https://studygolang.com/dl //下载并解压到/usr/local文件下 wget https://studygolang.com/dl/golang/go1.18.3.linux-amd64.tar.gz //解压并复制到/user/local文件夹下 tar -C /usr/local -zxf go1.18.3.linux-amd64.tar.gz 2.编辑环境变…...

博图 linucx vmware

电脑与 PLC 的连接 博图装在虚拟机里&#xff0c;PLC 通过网线与电脑连接 可以是使用网线直接连接&#xff0c;也可以中间接个路由器或交换机 问题在于虚拟机提供多种网络连接方式&#xff0c;但不是每种都可以与 PLC 建立连接 以 VMware 虚拟机为例&#xff0c;进入编辑/虚拟网…...

Service Work离线体验与性能优化

Service Work离线体验与性能优化 引言 先放个意外事件&#xff0c;万事开头难&#x1f923;&#x1f923;&#x1f923; 原计划是分享离线应用与数据资源缓存的应用实践&#xff0c;结果发现这一技术已被web标准废弃 曾经做过一个PC应用&#xff0c;业务需求要求应用具备容灾…...

Unity 语音转文字 Vosk 离线库

市场有很多语音库&#xff0c;这里介绍Vosk SDK 除了支持untiy外还有原生开发服务器等 目录 安装unity示例demo下载语音训练文件运行demo结尾一键三联 注意事项 有可能debug出来的文本是空的&#xff0c;&#xff08;确保麦克风正常&#xff0c;且索引正确&#xff09;分大…...

VSCode连接Github的重重困难及解决方案!

一、背景&#xff1a; 我首先在github创建了一个新的项目&#xff0c;并自动创建了readme文件其次在vscode创建项目并写了两个文件在我想将vscode的项目上传到对应的github上时&#xff0c;错误出现了 二、报错及解决方案&#xff1a; 1.解决方案&#xff1a; 需要在git上配置用…...

《AI赋能鸿蒙Next,打造极致沉浸感游戏》

在游戏开发领域&#xff0c;鸿蒙Next系统与人工智能技术的结合为开发者们带来了前所未有的机遇&#xff0c;使打造更具沉浸感的游戏成为可能。以下将深入探讨如何利用人工智能在鸿蒙Next上开发出令人身临其境的游戏。 利用AI优化游戏角色智能行为 在传统游戏中&#xff0c;非…...

小白:react antd 搭建框架关于 RangePicker DatePicker 时间组件使用记录 2

文章目录 一、 关于 RangePicker 组件返回的moment 方法示例 一、 关于 RangePicker 组件返回的moment 方法示例 moment方法中日后开发有用的方法如下&#xff1a; form.getFieldsValue().date[0].weeksInWeekYear(),form.getFieldsValue().date[0].zoneName(), form.getFiel…...

<C++学习>C++ std 多线程教程

C std 多线程教程 理解多线程的概念 多线程是一种并发编程技术&#xff0c;它允许程序同时运行多个任务。每个线程共享同一进程的资源&#xff08;如内存&#xff09;&#xff0c;但拥有独立的执行路径。多线程编程在现代 C 中变得更加便捷和安全&#xff0c;标准库提供了强大…...

手把手教你用MCP+Selenium打造专属内容发布机器人(附避坑指南)

从零构建MCPSelenium自动化发布系统的实战指南 在当今内容为王的数字时代&#xff0c;如何高效管理多平台内容发布成为创作者和企业的核心需求。本文将带您深入探索如何利用MCP协议与Selenium技术栈&#xff0c;打造一个高度定制化的自动化内容发布系统&#xff0c;特别针对小红…...

突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案

突破音乐加密限制&#xff1a;Unlock Music实现跨平台音频自由解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: …...

图的存储方式详解(邻接矩阵 + 邻接表)| 算法入门必看

在算法学习中,图是仅次于树的核心数据结构,广泛应用于路径规划、网络拓扑、社交关系等场景。而图的存储是后续图论算法(DFS、BFS、最短路等)的基础——选择合适的存储方式,能直接影响算法的时间和空间效率。 本文将详细讲解图的两种最常用存储方式:邻接矩阵和邻接表,从…...

本日我的《宅男神探》为当当电子书【玄幻/惊悚】榜第六名

本日我的《宅男神探》为当当电子书【玄幻/惊悚】榜第六名&#xff01; 地址http://e.dangdang.com/products/1901322470.html 杨赞是一名热爱推理的年轻人&#xff0c;平时喜欢用逻辑思维分析生活中的各类 问题。大学毕业后&#xff0c;他在母校附近开了一家小书店&#xff0…...

基于SpringBoot + Vue的校园流浪动物救助平台

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

华为OD生存指南:转正挑战、身份认知与职业适配

1. 华为OD转正挑战的真相 刚入职华为OD时&#xff0c;很多人都会被HR描述的转正路径所吸引。四步转正流程听起来清晰明了&#xff1a;有HC、拿绩效A、通过可信认证、工作满一年。但真正进入这个体系后&#xff0c;你会发现每个环节都暗藏玄机。 关于HC&#xff08;Head Count…...

3个核心技巧:快速掌握免费在线PPT编辑器PPTist的创作秘诀

3个核心技巧&#xff1a;快速掌握免费在线PPT编辑器PPTist的创作秘诀 【免费下载链接】PPTist PowerPoint-ist&#xff08;/pauəpɔintist/&#xff09;, An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing…...

cool-admin(midway版)前端路由缓存:include与exclude配置策略

cool-admin(midway版)前端路由缓存&#xff1a;include与exclude配置策略 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midway.js 3.x…...

Hotkey Detective:3步快速解决Windows热键冲突,找出占用快捷键的幕后黑手

Hotkey Detective&#xff1a;3步快速解决Windows热键冲突&#xff0c;找出占用快捷键的幕后黑手 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/h…...

高效获取B站视频:downkyi开源工具全方位使用指南

高效获取B站视频&#xff1a;downkyi开源工具全方位使用指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09…...