TOTP 的工作原理 - 基于时间同步生成的 6 位验证码
Google Authenticator 等应用显示的 6 位验证码是由共享密钥和当前时间生成的。本文解释了 RFC 6238 定义的 TOTP 算法、与 HOTP 的区别、常见的时钟漂移故障模式,以及设置时扫描的二维码里到底包含什么。
关于时间和时区的深度文章
Google Authenticator 等应用显示的 6 位验证码是由共享密钥和当前时间生成的。本文解释了 RFC 6238 定义的 TOTP 算法、与 HOTP 的区别、常见的时钟漂移故障模式,以及设置时扫描的二维码里到底包含什么。
公历、伊斯兰历和希伯来历建立在截然不同的天文基础之上。本文解释阳历、阴历和阴阳历的区别,各文明为何选择了各自的历法体系,以及现代节日如何融合了这三种历法的影响。
沙漏曾是中世纪航海的支柱,在机械时钟兴起后逐渐退场,但至今仍活跃在桌游、仪式和软件加载图标中。本文追溯沙漏的物理原理、航海历史及其在现代文化中的象征意义。
秒表测量的是经过时间而非绝对时间,这一区别决定了其设计理念。从机械怀表到石英、电子终点摄影,再到 GPS 同步场边系统,秒表技术不断演进以满足日益严苛的精度要求。
Excel 的日期和时间函数是金融、排程和商业分析的日常工具。本文涵盖序列号模型,以及最实用的函数包括 DATE、TODAY、NETWORKDAYS、EOMONTH 和 WEEKNUM,并附有来自实际电子表格的实用示例。
MySQL时区问题几乎总是源于对三个层次的混淆:服务器默认值、会话设置和列类型。本文详解TIMESTAMP与DATETIME的行为差异、time_zone变量如何与连接交互,以及JDBC驱动的正确配置方法。
Java 8 引入的 java.time API 提供了五个用于表示日期和时间的核心类。了解何时使用 Instant、OffsetDateTime、ZonedDateTime、LocalDateTime 或 LocalDate 是避免时区 Bug 的关键。本文结合 Spring Boot 和 JPA 项目的实践,逐一介绍各个类的使用场景。
多年来,JavaScript 开发者一直使用 Moment.js、Day.js、date-fns 和 Luxon 来弥补原生 Date 对象的不足。如今 Temporal API 有望让其中许多库变得多余。本文从包体积、API 设计、时区支持和迁移成本等方面进行对比,帮助你选择合适的工具。
Python 3.9引入了zoneinfo作为IANA时区的标准库方案,但长期使用的pytz包仍存在于许多代码库中。本文比较两者,解释naive与aware的边界,并涵盖实际陷阱,包括Windows的tzdata、fold属性以及迁移策略。
闰年并非简单地每四年出现一次。格里高利历采用400年为一个周期,并设有两条例外规则,以确保日历与地球公转保持一致。本文详解闰年背后的天文学原理、程序员常踩的实现陷阱,以及未来的4000年问题。
从铯喷泉钟到光晶格钟,原子计时定义了秒,并支撑着 GPS、金融交易和物理实验。本文解释其原理、已达到的精度水平,以及为什么超稳定时钟对隐形基础设施至关重要。
NTP通过层级结构和巧妙的往返时间计算实现跨网络的时钟同步。本文涵盖Stratum层级、偏移量计算、chrony和systemd-timesyncd等现代实现,以及2020年引入的NTS安全扩展。
夏令时在过去十年中不断失去政治支持。欧盟于 2019 年投票废除时钟调整,关于心脏病发作和昼夜节律紊乱的医学证据也在不断增加。本文综述了相关科学研究、节能神话以及各地区的实际决策。
国际日期变更线沿大约东经 180 度在太平洋上呈锯齿状延伸,将“今天”与“明天”分隔开来。本文解释了为什么这条线不是一条直线、船舶和飞机穿越时会发生什么,以及为什么世界上最早的日出出现在基里巴斯。
计算两个城市之间的时差看似简单,但 UTC 偏移量、半小时时区、夏令时和国际日期变更线都会使其复杂化。本文通过详细步骤和实例讲解一种可靠的计算方法,涵盖最容易出错的情况。
软件中时间戳处理的首要法则是“以 UTC 存储,以本地时间显示”。本文介绍这一原则的理由、ISO 8601 格式、JavaScript 和 Python 中的实践模式、最常见的 bug,以及能在上线前捕获夏令时和日期线问题的测试策略。
2022 年,国际计量大会投票决定在 2035 年前逐步取消闰秒。本文介绍原子时间与天文时间之间的差距、闰秒为何会导致 IT 系统故障,以及闰秒平滑技术如何在正式废除之前缓冲了这一问题。
世界时钟不仅是装饰。在远程团队和国际旅行的时代,它成为一种思维工具,帮助你公平地安排会议、规划转机衔接,并避免夏令时带来的意外。本文展示世界时钟在屏幕上真正发挥作用的实际场景。
在铁路出现之前,每个城镇都使用自己的地方太阳时。火车使这变得不可能,短短几十年内世界便采纳了以格林尼治子午线为基准的协调时间体系。本文追溯从地方太阳时到 1884 年国际子午线会议再到 UTC 的历程。
了解夏令时的运作方式、哪些国家实行夏令时、转换发生的时间,以及夏令时如何使国际日程安排变得复杂。
介绍经循证验证的策略,帮助你在跨越多个时区后最大限度地减少时差反应,包括光照暴露时机、进餐时间安排和出行前预调整技巧。
为跨多个时区分布的远程团队提供实用策略,涵盖重叠工作时间、异步沟通、会议安排以及协调工具。
了解时区如何将世界划分为不同本地时间的区域、UTC 偏移量的工作原理,以及为什么某些时区使用半小时增量。
了解什么是 Unix 时间戳、为什么从 1970 年 1 月 1 日开始计秒、如何将其转换为可读日期,以及 2038 年问题意味着什么。
国际商务出差中,时差反应可能让第一天完全浪费,或者让重要会议安排在认知低谷时段。本文涵盖出发前准备、飞行策略、会议时段安排、与总部的异步协作,以及保护出差后工作的恢复计划。
人体内部生物钟并非恰好 24 小时,因此必须每天重置。本文解释视交叉上核的作用,光照、进餐时间和运动如何充当时间给予因子,以及轮班工作者和旅行者如何利用这些科学知识更快恢复。
地球每24小时自转360度,因此理论上经度每相差15度就等于一小时的时差。然而在现实中,时区的划定远不止遵循经线,而是受政治与经济因素的深刻影响。本文探讨经度与时间的地理学原理,以及现实偏离理论的诸多案例。
选择如何显示时间看似简单,但涉及区域惯例、午夜和正午的 AM/PM 歧义、ISO 8601 与人类友好格式的选择,以及相对时间字符串。本文引导 UI 设计师和开发者做出最关键的设计决策。
电波钟接收来自国家广播台的长波授时信号,并自动校正到原子钟精度。本文介绍时间码编码方式、为什么夜间接收效果最佳、世界各地的标准频率发射台,以及GPS授时钟表的对比。
GPS定位对精确时间的依赖远超人们的想象。本文介绍卫星原子钟、使位置误差保持在小范围内的相对论修正、GPS时间与UTC的关系,以及困扰老旧接收器的周数翻转问题。
主观时间会随注意力、情绪、年龄甚至体温的变化而拉伸或压缩。本文综述了时间感知的认知心理学与神经科学研究,并探讨如何在实际生活中延长或缩短对时间的感受。
错峰通勤允许员工从几个固定的上班时间中进行选择,而非遵守统一的刚性作息。本文探讨通勤压力的降低、与生物钟类型匹配带来的生产力提升、团队协调的挑战,以及使该制度真正奏效的设计技巧。
跨国通话或视频会议不仅仅是了解当地时间。各国的办公时间不同,电话礼仪的文化差异也很大,紧急情况更需要另一套规则。本文提供了一份在恰当时机联系对方的实用指南。
构建时区转换 API 听起来简单,但很快就会遇到 IANA 数据库管理、夏令时间隙处理、错误语义和缓存策略等问题。本文涵盖了决定端点在政策和 tzdata 更新后能否保持可靠的关键设计决策。
从日晷到光晶格钟,计时技术的演变跨越 5000 年,精度提升了 18 个数量级。本文逐一梳理各时代的突破,从水钟和钟摆机芯到原子钟和正在研究中的核钟。
分布式系统无法就单一全局时钟达成一致,这使得事件排序出乎意料地困难。本文涵盖完美全局时间的不可能性、Lamport 时钟和向量时钟、Google Spanner 的 TrueTime,以及驱动 CockroachDB 的混合逻辑时钟。
历法是人类的发明,而非自然事实。从儒略历到格里历的转变历经数百年才完成,许多其他历法至今仍在使用。本文概述了历法的基本原理、1582 年的改革,以及 21 世纪仍然活跃的各种历法。
频繁的国际旅行和轮班工作使人暴露于慢性昼夜节律紊乱中,带来心血管、代谢、免疫和认知方面的风险。本文综述流行病学证据,并提供减轻影响的实用策略。
爱因斯坦的相对论表明时间并非绝对。本文通过具体实例解释速度和引力导致的时间膨胀:GPS 校正、双生子佯谬、东京晴空塔实验,以及黑洞附近的极端时间减速。
知识工作者的生产力取决于受保护的时间而非更多的时间。本文涵盖帕金森定律、番茄工作法、深度工作、时间块规划,以及从时间管理到精力管理的深层转变。
国际旅行带来一项旅客往往低估的小任务:设置你拥有的每一台时钟。本文逐一讲解智能手机、模拟手表、相机的调整方法,以及让你在适应当地时间的同时保持与家乡协调的双时区策略。
以本地时间配置的 cron 任务在夏令时切换期间会静默地重复执行或跳过。本文详解其故障模式,介绍以 UTC 运行调度的方案、Kubernetes CronJob 的 timeZone 字段,以及云调度器如何处理同样的问题。
UTC并非由一台时钟产生,而是由全球80多个研究机构的数据经巴黎BIPM加权平均生成。本文讲解TAI、闰秒决策、从卫星到NTP的分发渠道,以及即将到来的秒的重新定义。
国际日期变更线并非理论上的直线,而是一条曲折的边界,其形状源于阿拉斯加的出售、基里巴斯的统一、萨摩亚的经济转向,以及缺乏任何具有约束力的国际条约。本文解释这些弯曲及其揭示的边界运作逻辑。
跨国企业通过追日开发、分布式客户支持和轮换值班,将时区从障碍转变为战略资产。本文详解交接设计、跨站点文化凝聚力以及多站点团队高效运转的操作细节。
最佳睡眠时间取决于时间型态而非意志力。本文介绍从极端晨型到极端夜型的谱系、90分钟睡眠周期的结构、社会性时差、光环境,以及如何通过两周睡眠日记发现最适合自己的睡眠模式。
国际商务不仅面临时区差异,还要应对千差万别的各国假日。本文涵盖各国公共假日的多样性、宗教浮动节日、地区非正式休假惯例,以及如何让日程工具掌握这些信息。
夏令时每年制造两个异常时刻:春季拨快时不存在的时间和秋季拨回时重复的时间。本文详细列举了由此在调度、时长计算、重复事件、数据库存储和测试策略中产生的 bug。
国际航班的到达时间涉及飞行时长、时区差和国际日期变更线的综合计算。本文通过东飞、西飞、中转及夏令时影响的实例,详细讲解计算公式和验证方法。
时间是否在流动、未来是否与过去同样真实,这一问题已困扰哲学家数千年。本文梳理A理论与B理论、块状宇宙、时间之箭、物理时间与意识体验的关系,以及时间哲学对日常生活的启示。
数字游民面临着更尖锐的时区挑战:他们的位置不断变化,因此与客户的时差每周都在变。本文涵盖锚定时区策略、渐进式时间调整、工具配置以及维持可持续游牧工作的边界设定。
新年以一波26小时的浪潮降临全球,从基里巴斯的莱恩群岛开始,到贝克岛结束。本文追踪这一浪潮经过各大城市的足迹,介绍仍在庆祝的非公历新年,并探讨新年对运行在UTC上的IT系统意味着什么。
在 DATE、TIME、TIMESTAMP 和 TIMESTAMPTZ 之间的选择,决定了应用程序能否正确处理时区。本文详解预约系统、未来事件调度、审计日志,以及从忽略时区的遗留架构中迁移的策略。
卫星通信受物理定律约束:信号以光速传播,轨道高度决定延迟。本文介绍LEO、MEO和GEO卫星的差异、对语音通话和互联网的影响,以及深空通信的巨大延迟。
大脑并没有单一的时钟,而是拥有多个专门处理毫秒、秒和年的系统。本文介绍小脑的毫秒计时、基底节的间隔计时、海马体的时间细胞,以及为何随着年龄增长时间感觉加速的神经科学原理。
世界各大证券交易所的交易时间跨越各个时区接力运行,构成近乎连续的市场窗口。本文以 UTC 为基准解析东京、伦敦和纽约的交易时间、市场重叠时段、24/5 的外汇市场,以及节假日日历如何造成覆盖缺口。
子午线是定义经度并支撑全球时区体系的南北向基准线。本文介绍子午线的本质、格林尼治如何成为本初子午线、子午线与时间的关系,以及历史标线与现代GPS之间102米的偏差。
各主流编程语言的日期时间 API 朝着不同方向演进。本文对比 JavaScript 的 Temporal、Python 的 datetime + zoneinfo 以及 Java 的 java.time,梳理常见陷阱,并为新旧项目提供选型建议。