Linux C/C++网络编程实战-陈硕-笔记14-扩展知识

UTC and GMT

  • UTC:协调世界时。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。UTC是原子时,以某一个时间起点至今的原子时秒长来计数。(UTC = TAI + Leap Seconds, 原子时 + 闰秒修正。)
  • GMT:格林尼治时间。格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治时)的时间。GMT是天文时,以地球自转计时。(地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。)
  • Unix Time:UNIX时间(或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式)。以Unix元年至今的秒数,即从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。
    • 一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。d a y s = t i m e s t a m p / 86400 , s e c o n d s = t i m e s t a m p days = timestamp/86400, seconds = timestamp%86400days=timestamp/86400,seconds=timestamp
    • 时间之间的换算关系为:1 分 钟 = 60 s , 1 小 时 = 3600 s , 1 天 = 86400 s , 1 周 = 604800 s , 1 月 ( 30.44 天 ) = 2629743 s , 1 年 ( 365.24 天 ) = 31556736 s 1 分钟 = 60 s, 1 小时 = 3600 s, 1 天 = 86400 s, 1 周 = 604800 s, 1 月 (30.44 天) = 2629743 s, 1年 (365.24 天) = 31556736 s1分钟=60s,1小时=3600s,1天=86400s,1周=604800s,1月(30.44天)=2629743s,1年(365.24天)=31556736s
    • 注意:如果 timestamp 为负数,即在1970年1月1日0时0分0秒之前时,秒的计算表达式需要稍作改变。因为C/C++语言的特性,% 运算向0取整,因此 负数取模(或者叫求余)的结果是 负数, 而作为时间单位 秒,不能以负数形式出现,因此这里需要有一个判断 if (timestamp < 0) seconds = (timestamp+86400) % 86400。 (注:python中%向负穷取整,因此无需考虑负数的情况)
  • 闰秒:为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。
    • 1972年,国际计量大会决定,当“世界时”与“原子时” 之间时刻相差超过0.9秒时,就在“协调世界时”上加上或减去1秒,以尽量接近“世界时”,这就是闰秒。
    • 但是由于 Unix Time 采用的计时方式不考虑闰秒,因此在进行闰秒调整时,如果系统没有对这种情况做出处理,将会产生很大的缺陷。
    • 闰秒弥补(leap smear):Google针对“闰秒”问题,采取“闰秒弥补(leap smear)”技术,即每次增加几毫秒,最终增加到1秒钟。虽然这是一种聪明的修复方法,但是某些地方的网站仍然难逃“闰秒故障”。参考:Official Google Blog: Time, technology and leaping seconds
      在这里插入图片描述
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值