夏令时是邪恶的
March 9, 2008 2:28 pm | In Life, Tech | 4 Comments | hide换夏令时啦!丢了一个小时。每年都要调两次时间,每次调时间,都会出点事。
(标题引自 chen3feng 留言)最早认识到夏令时的邪恶是多年前改夏令时那天我刚好赶早班飞机,人还在外地完全没想起来要调时间,幸好我临睡前突然想起来,需要再提早一个小时出发,后来到机场的时候只剩 20 分钟就起飞了,真是后怕……
早期不知道是 samba 还是 windows 有问题,总之调时间以后两边看共享目录的时间会差一小时。有一次我几 TB 的数据被自动重新同步了一次,真衰。
有人在 crontab 里放了两点半执行的命令,结果调夏令时那天事务流程完全乱掉…… crontab man page 专门在 BUGS 一节指出:
If you are in one of the 70-odd countries that observe Daylight Savings Time, jobs scheduled during the rollback or advance will be affected. In general, it is not a good idea to schedule jobs during this period.
因为有了一些教训,有同事写程序开始用 UTC 时间,这样就不会受到本地时间调整的影响。去年不知道哪个土鳖提出来把调夏令时的日子提前一个月,各类操作系统都需要更新过才能正确调整夏令时。有位同学没更新操作系统,看时间不对就直接把电脑时钟拨快了一个小时,结果反而那些先进的用 UTC 时间的程序出错了(因为没有调整时区,所以电脑的 UTC 时间就错了)……
sigh,到底是用本地时间,还是 UTC 时间写程序?
为什么要执行夏令时??不是说夏令时不省能源反而费吗???
时间是什么?(续三)
September 28, 2007 11:22 pm | In Study | 2 Comments | hide第一篇讲到 1967 年国际通过了新的时间标准,使用原子钟来规定一秒钟的长度,直到现在这仍旧是最精确的计时方法。不过,规定了这个,谁来统一全世界的时间呢?换句话说,哪一个原子钟作为世界标准时间呢?在如此多元化的世界里,当然谁也不可能服谁的。当初格林威治天文台被搞成了标准 0 度经线,大家就憋了一肚子气,凭什么一个小英国就是地球经线标准……原子钟这里,大家也都学乖了,说哪里的原子钟都不是标准,世界上所有到一定级别的原子钟都合起来做一个加权平均,这样算出来的时间作为世界原子钟时间标准(International Atomic Time,缩写为 TAI,缩写来自法语 Temps Atomique International)。目前世界上有 300 多个原子钟参与 TAI。这样的好处是原子钟可以互相比较剔除不准的钟,坏掉几个原子钟也不太会影响人类计时标准。
TAI 建立以后,很多物理学家都很高兴,人类终于有很准确的钟了。就像二十世纪初的物理学一样,当时有些人认为人类已经找到了终极的计时方法,这个领域已经没什么好研究的了,将来要做的也就是修修补补,利用新技术提高精度而已。到了 80 年代,有人发了一篇论文,说原子钟因为不是工作在绝对零度,所以原子钟本身的黑体辐射会造成一定的误差。结果大家一算,好家伙,所有的原子钟都要作巨大的修正。到了 90 年代,随着原子钟精度的提高,人们发现这个黑体辐射修正还是相当难算的,有一些可怜的原子钟因为设计不良算不准这个修正就被踢出了 TAI。如今,这个黑体辐射修正已经成为铯原子钟的主要误差之一。
TAI 的计时精度比天文测量要高很多,而且测量也很快。天文方法校正时间需要测量一年的天象,而铯原子钟只要测量几个星期就可以到极高的精度。大部分人对 TAI 很满意,但天文学家们就很不爽了,凭什么他们研究了几百年的计时标准突然就被一个才十多年的年轻领域给取代了。于是他们扯皮、抬杠,开国际会议大吵大闹,并举例说因为地球越跑越慢了,如果按照当时的 TAI 标准,过几千年后太阳到天顶的时间就会是子夜而不是正午了。天文学家这么吵起架来还是很难搞的,于是最后大家只好妥协一下,搞出一个协调世界时(也叫国际协调时)。规定协调世界时缩写的时候,英语国家的人说用 CUT (coordinated universal time),法语国家的人说用 TUC (temps universel coordonné),结果这个事情照样也是谁也打不赢谁,只要再妥协一次,把两个中和一下,缩写叫做 UTC。
当时根据天文观测规定的时间叫做 UT1 (Universal Time),UTC 就是把 TAI 和 UT1 综合一下。UTC 在 1958 年对准到 UT1,这之后 UTC 平时走时按照 TAI 来走,但是一个叫国际地球自转服务(International Earth Rotation and Reference Systems Service ,IERS)的组织有权在适当的时候在 UTC 里面加入闰秒,以保证 UTC 和 UT1 的差别永远在 1 秒钟之内。这个天文学家和原子物理学家协调出来的 UTC 时间,也就是我们日常所用的标准时间。闰秒一般是加在 6 月或者 12 月最后,下图就是最近几年 UT1 和 UTC 差距的变化,每个不连续的跳跃就是 UTC 加入闰秒的地方。加了这么多闰秒,如今 2007 年 UTC 已经比 TAI 落后 33 秒了。
还有一个常听到的缩写是 GMT (Greenwich Mean Time),这个理论上应该是 UT1 的前身,但是因为现在概念混淆,很多时候 GMT 被认为是 UTC 的同义词。另外,GPS 时间的精度要求在纳秒级,随便跳一个闰秒那就完全乱套了,70 年代末第一颗 GPS 卫星上天,GPS 时间对准了当时的 UTC(当时比 TAI 慢 19 秒),从那以后 GPS 时间走时按照 TAI 来走,完全不考虑闰秒,所以 GPS 时间永远比 TAI 慢 19 秒。由于 GPS 时间不会随便跳闰秒,而且也可以很方便的获得,所以现在有一些对时间序列要求高的系统采用的是 GPS 时间而不是 UTC,比如某些手机网络。不过,现代 GPS 信号也会很厚道的包含 UTC 和 GPS 时间相差的秒数,所以地面接收器可以用 GPS 信号来对 UTC 时间,实际上,这就是目前最准确的 UTC 时间传播方式。
讲完了。参考资料:
- The Science of Timekeeping
- Pratap Misra and Per Enge, Global Positioning System: Signals, Measurements, and Performance, 2nd Edition
- General Internet resources, particularly Wikipedia, HowStuffWorks.
This weblog is licensed under a
Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.
