关于时间的总结

什么是时间戳

时间戳定义是:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,表示为:1970-01-01 00:00:00 UTC。它称为Unix时间(Unix time)、POSIX时间(POSIX time)。从定义可以看到,全球相同时刻,不管你是什么时区,时间戳是一致的,时间戳是不会跟着时区的改变而改变。用时间戳来表示时间全球都是一致的,但是它是很长的整数,非常不直观,因此大家常用格式化字符串来表示时间。如:1520411719 时间戳,对应北京时间是:2018-03-07 16:35:19 GMT+8,对应此时的美国华盛顿时间是:2018-03-07 03:35:19 GMT-5,这也是我们常说的时间。你发现相同时候,不同地区时间表示形式是不一样的。本页提供时间戳转UTC,GMT时间时间,转各国时间。同时提供各国时间转为时间戳。

模块中描述时间的类

tilbWj.png

模块的功能函数说明

time.time()
返回自纪元以来的时间(秒)

time.gmtime([ 秒] )
将自纪元以来的时间(秒)转换为struct_timeUTC,其中dst标志始终为零。
如果未提供secs或 None,time()则使用由返回的当前时间。
小数秒被忽略。有关struct_time对象的说明,请参见上文 。
[import calendar ] 有关calendar.timegm()此函数的反函数,
也就是将一个struct_timeUTC转换成自纪元以来的秒数。

time.localtime([ 秒] )
像gmtime(),但转换为当地时间。如果未提供secs或 None,time()则使用由返回的当前时间。
dst标志设置为1DST应用于给定时间的时间。此函数的反函数是time.mktime()。

time.asctime([ t ] )
转换的元组或struct_time表示如通过返回的时间 gmtime()或localtime()到以下形式的字符串。日字段的长度为两个字符,如果日是一位数字,则用空格填充,例如:。
'Sun Jun 20 23:21:05 1993''Wed Jun  9 04:26:40 1993'
如果未提供t,localtime() 则使用由返回的当前时间。
反函数 time.strptime(time.asctime(), '%a %b %d %H:%M:%S %Y') 返回struct_time
time.strptime('2004-02-12T15:19:21+0800', '%Y-%m-%dT%H:%M:%S+0800')
time.strptime('2004-02-12T15:19:21+08:00', '%Y-%m-%dT%H:%M:%S+08:00')
time.strptime('2018-03-07 16:35:19 GMT+8', '%Y-%m-%d %H:%M:%S GMT+8')
time.strptime('1970-01-01 00:00:00 UTC', '%Y-%m-%d %H:%M:%S UTC')

time.ctime([ 秒] )
将自纪元以来的时间(以秒为单位)转换为以下形式的字符串: 代表本地时间。
日字段的长度为两个字符,如果日是一位数字,则用空格填充,例如:。
'Sun Jun 20 23:21:05 1993''Wed Jun  9 04:26:40 1993'
如果未提供secs或None,time()则使用由返回的当前时间。ctime(secs)等同于 asctime(localtime(secs))。
如果未提供t,localtime() 则使用由返回的当前时间。

一些时间概念

格林威治标准时间GMT

十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。 1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年 决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有 一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间 参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林 威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来,标示在手表上,则代表此 表具有两地时间功能,也就是同时可以显示原居地和另一个国度的时间。

世界协调时间UTC

多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反 而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是Coordinated Universal Time- 世 界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、 地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当 严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持 在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转 周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款 来说,GMT与UTC的功能与精确度是没有差别的。

夏日节约时间DST

所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时, 将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想 于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家, 以削减灯光照明和耗电开支。自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。 目前被划分成两个时区的印度也正在商讨是否全国该统一实行夏令日光节约时间。欧洲手机上也有 很多GSM系统的基地台,除了会传送当地时间外也包括夏令日光节约时间,做为手机的时间标准, 使用者可以自行决定要开启或关闭。值得注意的是,某些国家有实施「夏日节约时间」的制度,出国 时别忘了跟随当地习惯在表上调整一下,这可是机械表没有的功能设计哦!

CST时间

CST却同时可以代表如下 4 个不同的时区:

Central Standard Time (USA) UT-6:00

Central Standard Time (Australia) UT+9:30

China Standard Time UT+8:00

Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

总结

如果仅仅是时间格式的使用转换,那么使用time模块已经足够, 如果牵扯到时间的运算,那么使用datetime模块更加专业方便。 其实如果涉及到具体应用,一般数据库也会提供时间运算相关。 还有time模块是倾向于操作系统中的系统时钟周期等概念, 也就是说time模块并不是专门为业务应用的时间计算、表达服务。

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » 关于时间的总结

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注