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

多时区的全天概念概述

背景

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

专业术语

标准时区:其实就是格林尼治时间,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、如果跨时区了,如果觉得表现困难,那可以考虑跨时区的时候是时间段,本时区的时候才表现一

http://www.cnnetsun.cn/news/62720.html

相关文章:

  • Java Web 核心全解析
  • 7、远程服务安全攻防全解析
  • 18、网络安全防护:psad与fwsnort的应用与集成
  • 30、深入探索fwknop:安全访问与防护机制详解
  • 31、编程技巧与实用程序解析
  • 38、深入探索 gawk 扩展开发:性能优化与功能定制
  • 数据结构之递归-如何巧妙利用递归函数的返回值
  • 46、深入探索编程符号、函数与操作:从基础到高级应用
  • 论AI时代下 “马扁” 子的趋势分析(一)
  • 7天拿下微软PowerBI证书真的太香了
  • JSP中如何设计大文件上传的交互界面与用户体验?
  • wangEditor粘贴ppt幻灯片转存网页兼容处理
  • 从 paperxie 到工具矩阵:AI 开题报告工具如何帮你突破 “学术启动瓶颈”?
  • 工具矩阵:开题报告写作的 “规范效率工具箱”——9款 AI 工具的场景化适配实践
  • 咱们唠一下:单例Bean的“出生记”——从“零”到“成品”的全过程
  • Qt快速检测Ubuntu进程状态
  • 73、Sendmail配置参数详解
  • 【超全】基于SSM的企业客户管理系统【包括源码+文档+调试】
  • 数据点的“社交距离”:衡量它们之间的相似与差异
  • 论文格式魔法全书:用Word通配符和宏一键完成专业排版
  • 如果GPT-5.2可以胜任你的大部分工作,你会选择全面拥抱它,还是会恐惧它带来的冲击?它会让你更自由,还是更焦虑?
  • 2026年大模型学习资源全攻略:从零到精通,小白到程序员,一篇超详细的从入门到精通大模型学习指南!
  • 15、优化Windows系统性能:媒体定制与系统分析指南
  • 【软考系统架构设计师】六、软件工程
  • 【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
  • 数控滑台的基本概念
  • FMD辉芒微电子8位微控制器芯片,荣获“深圳市制造业单项冠军企业”认定
  • Unity XR 编辑器VR设备模拟功能
  • 国产银河麒麟SP3服务器部署mysql主从同步
  • BabylonJS开发:从零基础到项目实战