作家
登录

Python中的时间处理大总结

作者: 来源: 2017-11-07 14:55:11 阅读 我要评论


python中处理时光的模块有三个,datetime, time,calendar,融汇贯通三个模块,才能随心所欲地用python处理时光。本文就是为此而写,文┞仿侧重点在于梳理出三个模块的设计脉络,便于大年夜家记忆琅绫擎的api。在须要的时刻可以或许去查找响应的办法。但因为calendar模块应用不多,限于篇幅,本文没有涉及。

Python中的时光处理大年夜总结

有一点须要提前解释一下,time类和datetime类都有一个属性,它的值是一个tzinfo对象,琅绫擎包含了该time或者datetime的时区信息,一般称这个time或者datetime对象是aware的,它可以或许精确换算成自epoch开端的秒数。

1,概述

datetime模块主如果用来表示日期的,就是我们常说的年代日时分秒,calendar模块主如果用来表示年代日,是礼拜几之类的信息,time模块重要侧重点在时分秒,粗略大年夜功能来看,我们可以认为三者是一个互补的关系,各自专注一块。便应用户根据不合的应用目标选用趁手的模块。

2,大年夜time模块说起

为了进修time模块,我们须要先知道几个与时光相干的概念:

1),epoch

假设我们要将时光表示成毫秒数,比方说1000000毫秒,那有一个问题必须解决,这个1000000毫秒的起点是什么时光,也就是我们的时光基准点是什么时光?比如我说你身高1.8米,那这个身高是指相对于你站立的地面说的。这个时光基准点就是epoch,在Unix体系中,这个基准点就是1970年1月1日0点整那个时光点。

你可以用total_seconds()办法获得一个timedelta对象的秒数表示。

2),GMT, UTC

膳绫擎我们说epoch表示1970年的肇端点,那这个1970年又是相对于哪个基准时光呢?一般来说,就是相对于格林尼治时光,也叫做GMT(Greenwich Mean Time)时光,还叫做UTC(Coordinated Universal Time),为啥一个时光基准有两个名字?汗青上,先有的GMT,后有的UTC.

UTC是我们如今用的时光标准,GMT是老的时光计量标准。UTC是根据原子钟来计算时光,而GMT是根据地球的自转和公转来计算时光。

所以,可以认为UTC是真正的基准时光,GMT相对UTC的误差为0。

在实际中,我们的计算机中有一个硬件模块RCT,琅绫擎会及时G录UTC 时光,该模块有零丁的电池供电,即使关机也不影响。

有了epoch这个时光基准,又有了UTC这个基准的基准,我们就可以精确地表示一个时光了。

3),DST, tzone

尽管我们已经可以精确地表示一个时光,很多情况下,我们照样要根据地区实际情况对时光进行一个调剂,最常见的就是时区,tzone,信赖大年夜家都比较熟悉。

此时,当我们说5点5分这个时光时,还需加上是哪个时区的5点5分才能精确解释一个时光。

别的一个对时光做出调及?酵是DST.

创建datetime对象,我最常用的办法如下

DST 全称是Daylight Saving Time,是说,为了充分应用日光,削减用电,工资地对时光做出一个调剂,这取决于不合国度和地区的┞服策律例。比如说,假设你冬天7点天亮起床,但夏天6点天亮,那么在夏天到来时工资将时光加1个小时,如许就可以让你照样认为7点起床,但实际上是提前一个小时了。

这里我们只以linux为例来解释一下。

在linux中有TZ情况变量,其值类似如许:

CST+08EDT,M4.1.0,M10.5.0,这个字符串可以做如下解读,用空格分开他们,分成三部分

CST+08 EDT, M4.1.0,M10.5.0

  • 第一部分中的CST表示时区的名字,即China Standard Time,也就是我们说的北京时光,+8表示北京时光加上8小时就是UTC时光
  • 第二部分EDT表示DST的名字,我们说DST是因各个国度地区的┞服策律例不合而不合的,EDT后面也可以像CST后面一样加一个时光调剂值,但因为我们国内只在86年到92年实施过一段时光DST,如今已经废除,所今后面不消加调剂时光。
  • 第三部分表示的是实施DST的开端和停止时光,我们就不细解读了。

4),时光的表示,获取,转换

time模块中获取时光的根本办法是

t = time.time()

它返回的是大年夜epoch到如今的秒数(用浮点数表示),用的是UTC时光。

我们天然而然地想把这个秒数转为年代日时分秒的情势,而这种转换又分两种,一种照样用UTC时光,一种用我们地点时区进行调剂后的时光。

time模块给我们供给了两个办法,

  • time. gmtime(t)
  • time.localtime(t)

二者都返回一个类struct_time的实例,该实例具有如部属性:

Python中的时光处理大年夜总结

比拟用秒数表示的时光,如许的表示更合适我们懂得。

相反的,python同样供给了将这两种struct_time转为秒数的办法。

  • calendar.timegm()办法用来把UTC的struct_time(gmtime的返回对象)转为大年夜epoch开端的秒数
  • time.mktime()用来把用时区调剂过的struct_time(即localtime的返回对象)对象转为大年夜epoch开端的秒数

另一种常见的需求是在时光和表示时光的字符串之间进行转换。

  • time模块中的strftime和strptime就是做这个用的。

做个时光的明白人!

看名字大年夜家就应当知道它们的含义,

  • strftime 即 string format time,用来将时光格局化成字符串
  • strptime 即string parse time,用来将字符串解析成时光。

须要留意的是,这里的时光都是struct_time对象。


  推荐阅读

  5分钟变电脑高手 这些技巧让你装机又炫技

然则很多同伙对电脑装机不甚懂得,担心购买电脑硬件后装不上去,所以今天笔者就为大年夜家总结了一下装机的小技能,计算在双十一装机的同伙可以存眷一下。第一步:安装CPU以及散热器起首将>>>详细阅读


本文标题:Python中的时间处理大总结

地址:http://www.17bianji.com/lsqh/38567.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)