news 2026/2/19 10:18:43

多时区的全天概念概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多时区的全天概念概述

背景

公司准备出海,有些产品就得考虑全球的应用场景了,比如说一个中国人和一个美国人系统办公的事情,首先地理跨度就比较大,中间的时差问题就非常明显。

专业术语

标准时区:其实就是格林尼治时间,UTC时间。

本地时区:就是分处在各个地理位置上的时间,比如我们东八区,其实就是UTC 时间 +8为当地时间。

全天:一般意义上说的其实就是一整天,其实就是从0点到次日零点之间的时间段为通俗意义上的全天时间。

时差:其实就是不同时区之间的时间差值,比如说日本是东九区,我们是东八区,日本的时间就比我们早一个小时,在具体一点,在UTC时间为0点的时候,东八区的时间是8点,东九区的时间就是9点。

概念上的统一

如果大家都是同一个时区的,那么就没有统不统一的概念,因为大家本来就是一样的,所以我们讨论的场景仅仅是不同时区之间的场景。

我们其实天然的对时间不是很敏感,跟别人说一个时间的时候,如果跨了时区天然都是转换困难的。

本地时间,这个其实不光是一个数字的问题,周围的一切都会告诉你现在是几点,早上七八点太阳要出来,12点太阳要升到最高的位置,傍晚五六点太阳又要落下去。更重要的当地的人跟你说时间的时候都说的是当地时间。

所以,当你了解一件事情的时候,都是以自己的时间(一般是当地时间)为准的,就是我需要明确的知道,在我的时间里边,他是几点到几点。

另外还有一件事情很重要,你需要跟你的小伙伴交流的,所以他的时间也需要尊重,但是,如果你们两个还不在一个时区里边的话,再将原时间时间转换他的时区,这个转换就比较困难,所以一般跨时区讨论问题的时候,一般会说原始时区的时间,举个例子,你跟一个美国的同学要参加一个非洲同学的会议,那你跟美国同学确认的时候,就会说“那个非洲时间2点到3点的会议,你参不参加”。

具体要怎么表现

图片

这个是钉钉的表现,其实看上去就蛮正常的,符合我们之前概念上的统一里边提到的,我的时间跟原始时间的概念。

这样大家就可以一块愉快的交流了。

全天概念歧义

全天这里其实我们有分歧,有的人认为一天是一整天,有人认为一天是一个具体的时间段。

概念上的冲突

一天就是一整天

一天就是一天,他的时间维度是以天为最小维度的,所以他是一个点儿而并不是一个时间段。

你看,我们之间虽然有时差,但是大家都是17号有什么问题,难道中国的17号跟美国的17号不是一个17号?

所以相对于存在一整天一类的概念上,其实我们标识为17号,然后说明他是一整天就完事了呗。

并且你看,虽然咱们之间有时差,但是真正有效的时间,其实就几个小时,这几个小时差得多的话,嗐大概率不重叠,那么一天的概念,其实具有一定的普适性,并且UI界面表现也很直接,如果你差了几个小时,你在日历上显示的时候,他究竟是 17号的呢?还是 18号的呢?还是 17 跟 18号呢?再加上一整天的属性,那么一天的日程不就变成两天了?

一天是一个时区的一整天

一天是当前时区的一整天也就是从0点到次日的0点,他其实是存在明确的时间段的概念的。

当我们存在于不同的时区的时候,他就应该按照普通的时间段来进行表示了,毕竟本身跨天的时间段这个概念肯定是存在的。

更深层的冲突

World_Time_Zones_Map

在探讨更深层的冲突之前,我们还是先来统一一下几个概念

全天,我们之前已经讲过了,一天的概念,其实是从0点到次日0点。但是你有没有想过,这两个0点是哪个时区的?其实是你所在时区的对不对,比如说北京时间0点,切换中国的日期。那如果你在日本的话,你是不是按照日本的0点来进行时间上的切换?他们中间差了1个小时哦,我说的一天,跟你在日本说的一天,已经差了一个小时了哦,如果我们把17号这个概念对应到这两个时区里边,他们去掉重叠的时间部分,其实已经是25个小时了。

换句话说,当你提及17号的时候,其实,你最多能在25个小时内提到今天是17号,那我们在扩大一下这个概念,当你现在是UTC时间的17号,他是24小时,当你往东移动一个时区,那么17号所代表的时间就会增加1小时,这样的兄弟东边还有11个,西边还有12个,这么算下来,其实你一共有49个小时说今天是17号?其实是48,因为+12 -12 是重叠的,理论上你可以认为他只能选一边,纯数学上来看的话,他们应该是中心左边跟右边,也就是 这个特殊的时区只有半个小时,当然实际情况要比这个复杂一点。

有点难理解是不是,其实我们可以借助工具来验证一下这个说法。

怎么验证呢?我们从UTC+12 的0点到 24点,然后从UTC-12 的0点到24点,然后取他们的最大值,看看总共的时长究竟有多少。

http://time.syiban.com/zhshiqu.html

看一下这个小工具

图片

这个是UTC+12 的开始时间 也就是 UTC时间的 2025/12/16 12:00:00

图片

这个是UTC+12 的结束时间 也就是 UTC时间的 2025/12/17 12:00:00

图片

这个是UTC-12 的开始时间 也就是 UTC时间的 2025/12/17 12:00:00

图片

这个是UTC-12 的结束时间 也就是 UTC时间的 2025/12/18 12:00:00

我们取所有时间的最小值 也 就是 2025/12/16 12:00:00 到最大值 也就是 2025/12/18 12:00:00

也就是2天,刚好48小时

一共有25个时区,其实跟意义上的一天24个小时,每个时区相差一个小时的通俗概念上来说说稍微有点不太一样,其实有25个时区,是UTC 时区 东经、西经各12个时区,所以一共有25个时区,那一天24个小时是怎么分出来25个时区呢?其实东12跟西12其实物理上是重叠的区域,也就是说,他们去掉日期只对比时间的话,其实是一样的,但是他们的日期缺整整相差了一天,也就是24小时。

既然你能理解,他们的时间相同但是他们的日期不同的概念的话,我们可以再举个详细一点的例子。

图片

假设这里的A点是 UTC+12时区、B点事UTC-12时区,他们几乎是在同一个经度上,他们观察太阳几乎是一样的,但是他们两个差了整整一天。

那么,这个时候A点上的小a要请17号一整天的假,在B点上的小b是一个考勤管理员,从他本地时间删过来看,他会发现,Wow小a请了17号的假,但是小a 16号翘班了,17号反而来上班了。

这种问题,如果强制使用17号一天的概念统一全球,那么这个问题将无法调和。

所以,为了解决这个问题,应该如下处理:

1、如果当前时区内的时间一切如常处理,概念没有冲突

2、显示时间应该以当前用户人的时间为准,保留原始时间、原始时区概念

3、真正落库的时间使用标准化时间(不一定是UTC时间,时间就是时间而已,他只是一个时间点,UTC也好,东八也好,只是这个时间点的某一种表现形式),展示的时候再转换为需要的时间

4、如果跨时区了,如果觉得表现困难,那可以考虑跨时区的时候是时间段,本时区的时候才表现一

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/19 2:14:21

【完整源码+数据集+部署教程】链条缺陷检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

一、背景意义 随着工业自动化和智能制造的迅速发展,链条作为机械传动系统中不可或缺的组成部分,其质量直接影响到设备的运行效率和安全性。链条的缺陷不仅会导致设备的故障,还可能引发严重的安全事故。因此,及时、准确地检测链条缺…

作者头像 李华
网站建设 2026/2/15 22:26:06

12、系统安全维护与无线安全攻防全解析

系统安全维护与无线安全攻防全解析 1. 系统日志记录与补丁管理 在系统管理中,日志记录和补丁管理是至关重要的环节。日志记录工具如 newsyslog 或 logrotate 可用于管理日志,可通过 cron 守护进程定期调用这些工具。详细信息可查看 newsyslog 或 logrotate 的手册页。 /va…

作者头像 李华
网站建设 2026/2/17 4:10:52

16、Linux 和 Unix 安全技术指南

Linux 和 Unix 安全技术指南 1. 数据资源与文件操作 1.1 数据搜索 可以对数据资源进行搜索,同时也能搜索 dead.letter 文件的内容。 1.2 文件权限 文件权限的设置至关重要,以下是一些关键操作: - 为重要文件分配权限,范围在 147 - 149。 - 保护磁盘分区,操作范围…

作者头像 李华
网站建设 2026/2/10 14:39:40

22、《fwsnort使用与配置全解析》

《fwsnort使用与配置全解析》 1. 运行fwsnort 当fwsnort安装在支持内核字符串匹配的系统上后,我们就可以从命令行启动它。通常,fwsnort需要以root身份执行,因为默认情况下它会查询iptables,以确定运行的内核中可用的扩展,然后相应地调整翻译过程。以下是运行示例(部分输…

作者头像 李华
网站建设 2026/2/10 6:03:35

28、实用 awk 程序指南

实用 awk 程序指南 1. 运行示例程序 在使用 awk 程序时,我们需要掌握如何正确运行这些程序。一般来说,运行一个给定的 awk 程序可以使用以下命令: awk -f program —options files其中, program 是 awk 程序的名称,例如 cut.awk ; options 是程序的命令行选项,…

作者头像 李华
网站建设 2026/2/17 5:21:58

企业级权限表结构设计经典设计--纯个人分享

权限体系设计我的数据库表结构:🔐 碳管理系统权限体系详解🏗️ **核心架构:多租户RBAC模型**📊 **权限表关系**🔗 **权限控制流程**🎯 **权限验证维度**📋 **关键安全特性**&#x1…

作者头像 李华