不知大家是否曾遇到过这种困惑,当一堆时间相关的概念混到一起时,就搞不清楚时间到底该怎么玩啦!
本系列文章记录了我对时间的理解与思考,通过python来处理时间。希望有相同困惑的童鞋在阅读完本系列文章后,再也不用内心深处抗拒时间的处理及转换,轻轻松松搞定时间。
话不多说,上干货!!!
基本概念
在真正使用python处理时间之前,需要先了解有关时间的概念到底是什么,搞清楚理论,才能指导实践(python时间处理)。
GMT
GMT(Greenwich Mean Time),格林威治标准时间
理论上来说,格林威治标准时间的正午是指当太阳横穿格林威治子午线(也就是在格林威治天文台时)的时间。
由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。
地球每天的自转是有些不规则的,而且正在缓慢减速。那么,时间的表示上就会产生误差,那怎么办呢?
科学家们就讨论 提出了另外一种标准时间, 协调世界时间(UTC)
UTC
UTC(Coordinated Universal Time),协调世界时间
UTC 是基于原子钟的,相较于GMT更为精准。
对于大多数用途来说,UTC时间可等价于GMT时间。(PS:但GMT时间已不再被科学界所确定)
DST
DST(daylight saving time),夏令时,又称为"日光节约时制"
夏令时的目的是为了节约能源,人为的规定时间。
一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。
我国从1992年起,不再实行夏令时。
TIMEZONE
TIMEZONE,时区
为了克服时间上的混乱, 1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区),英国(格林威治天文台旧址)为中时区(零时区)、东1-12区,西1-12区;每个时区横跨经度15度,时间正好是1小时;最后的东、西第12区各跨经度7.5度,以东、西经180度为界。所以相邻两个时区的时间相差1小时。
在同一时区内的最东端和最西端的人看到太阳升起的时间最多相差不过1小时。当人们跨过一个时区,就将自己的时钟校正1小时(向西减1小时,向东加1小时),跨过几个时区就加或减几小时。北京时间在东8区,所以我们常看到的UTC时间转为北京时间要加8小时,就是这么来的。
ISO 8601
ISO 8601,是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。
- 日历日期表示方法
年为4位数,月为2位数,日为2位数,例如2020年5月28日可写成2020-05-28或20200528。
- 时间表示方法
时、分、秒都用2位数表示。对于UTC时间,最后加一个大写字母Z,其他时区用实际时间加时差表示。
UTC时间 下午2点30分5秒 表示为14:30:05Z或143005Z,
那么,北京当地时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。
- 日期和时间的表示方法
日期和时间合并表示时,要在时间前面加一大写字母T
例如,表示北京时间2020年5月28日下午5点30分8秒,可以写成2020-05-28T17:30:08+08:00或20200528T173008+08。
2020-05-28T06:25:05.578Z
T 代表日期和时间的连接符
Z 表示UTC时间
TIMESTAMP
时间戳(timestamp)
即是Unix时间戳(Unix timestamp),它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式。
定义为从格林威治时间1970年01月01日00时00分00秒起至当前的总秒数。
因此,不管你处在地球上的哪个时区,时间戳都是统一的。也就是说时间戳与时区无关,全球统一。