设为首页 收藏本站
查看: 1276|回复: 0

[经验分享] python小专题——time模块

[复制链接]

尚未签到

发表于 2015-4-20 10:00:02 | 显示全部楼层 |阅读模式
   time常用函数   
       最近参与python的一个项目,发现经常遇到一些常用的模块,而每次使用时,我都要查一遍。终于,我决定要各个击破,对常用的python小知识进行总结。下面总结了python中对时间处理的常见函数。
  在开始之前,首先要说明这几点:


  • 在Python中,通常有这几种方式来表示时间:1)、时间戳 2)、格式化的时间字符串 3)、元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
  • UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
  • 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量。运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
  • 元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
       time的函数较多,但常用的也就那几个。使用time函数前,照例先导入time模块。介绍常用函数前要先了解最基础的函数:
      (1)、time函数——返回当前时间的时间戳,浮点数格式



>>> from time import *   #导入python模块的所有函数
>>> time()
1370485361.442
      (2)、localtime函数——localtime([secs]),将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。



#默认以当前时间为准
>>> localtime()
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=39, tm_sec=49, tm_wday=3, tm_yday=157, tm_isdst=0)
#等同于localtime()
>>> localtime(time())
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=40, tm_sec=37, tm_wday=3, tm_yday=157, tm_isdst=0)
#指定一个时间戳参数
>>> localtime(1370485361.442)
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=10, tm_min=22, tm_sec=41, tm_wday=3, tm_yday=157, tm_isdst=0)
#默认从1970年1月1日开始
>>> localtime(345)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=5, tm_sec=45, tm_wday=3, tm_yday=1, tm_isdst=0)
>>> localtime(1)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)
     localtime()输出参数说明:

索引(Index)属性(Attribute)值(Values)

0
tm_year(年)
比如2013


1
tm_mon(月)
1 - 12


2
tm_mday(日)
1 - 31


3
tm_hour(时)
0 - 23


4
tm_min(分)
0 - 59


5
tm_sec(秒)
0 - 61


6
tm_wday(weekday)
0 - 6(0表示周日)


7
tm_yday(一年中的第几天)
1 - 366


8
tm_isdst(是否是夏令时)
默认为-1
     
  
  
  
  
  
     
     
  
     (3)、gmtime()函数——和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。



>>> gmtime()
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=47, tm_wday=3, tm_yday=157, tm_isdst=0)
>>> gmtime(time())
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=4, tm_min=2, tm_sec=53, tm_wday=3, tm_yday=157, tm_isdst=0)
      (4)、asctime()函数——asctime([tuple]), 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。



>>> asctime()#默认是当前时间的struct time
'Thu Jun 06 10:55:40 2013'
>>> asctime(localtime())
'Thu Jun 06 10:56:02 2013'
      (5)、ctime函数——ctime([secs]),把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。



>>> ctime() #等同于ctime(time())
'Thu Jun 06 11:05:34 2013'
>>> ctime(time())
'Thu Jun 06 11:05:44 2013'
#默认从1970年1月1日08:00:00开始
>>> ctime(238)
'Thu Jan 01 08:03:58 1970'
>>> ctime(1)
'Thu Jan 01 08:00:01 1970'
   以上是基础的时间函数,下面是常用的时间处理函数。
  
         实际存储中,更多的是存储时间戳(这样易于时间的计算,有更好的存储性能)而不是更易于我们阅读的时间格式,所以,我们有将时间戳转换为普通时间格式的冲动——strftime函数。
       (6)、strftime函数——strftime(format[, tuple]): 把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。 如果tuple未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。



>>> strftime('%Y-%m-%d %H:%M:%S', localtime(time()))
'2013-06-06 11:10:57'  #这是我们比较喜爱的时间格式
>>> strftime('%Y-%m-%d', localtime())
'2013-06-06'
>>> strftime('%Y-%m-%d %X', localtime())  ==>  %X给出默认本地相应时间
'2013-06-06 11:12:39'
   Format参数说明:

格式含义

%a
本地(locale)简化星期名称


%A
本地完整星期名称


%b
本地简化月份名称


%B
本地完整月份名称


%c
本地相应的日期和时间表示


%d
一个月中的第几天(01 - 31)


%H
一天中的第几个小时(24小时制,00 - 23)


%I
第几个小时(12小时制,01 - 12)


%j
一年中的第几天(001 - 366)


%m
月份(01 - 12)


%M
分钟数(00 - 59)


%p
本地am或者pm的相应符


%S
秒(01 - 61)


%U
一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。


%w
一个星期中的第几天(0 - 6,0是星期天)


%W
和%U基本相同,不同的是%W以星期一为一个星期的开始。


%x
本地相应日期


%X
本地相应时间


%y
去掉世纪的年份(00 - 99)


%Y
完整的年份


%Z
时区的名字(如果不存在为空字符)


%%
‘%’字符
     
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  (7)、mktime()函数——mktime(tuple),将一个struct_time或者9个参数的时间元组转化为时间戳。



>>> mktime(localtime())
1370490962.0
>>> mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0) #这样写是错的
Traceback (most recent call last):
File "", line 1, in
mktime(2013, 6, 6, 13, 3, 38, 1, 48, 0)
TypeError: mktime() takes exactly one argument (9 given)
>>> mktime((2013, 6, 6, 13, 3, 38, 1, 48, 0))#注意这里9个参数的元组作为一个参数
1370495018.0
>>>
      (8)、strptime()函数——strptime(string[, format]):把一个格式化时间字符串转化为struct_time。它是strftime()的逆操作。



>>> strptime('2013-06-06 11:12:39','%Y-%m-%d %X')
time.struct_time(tm_year=2013, tm_mon=6, tm_mday=6, tm_hour=11, tm_min=12, tm_sec=39, tm_wday=3, tm_yday=157, tm_isdst=-1)
  
   其他常用的时间函数:
  (9)、sleep()函数——sllep(secs),可以通过调用time.sleep来挂起当前的进程。time.sleep接收一个浮点型参数,表示进程挂起的时间。
       (10)、clock()函数——这个函数在不同的系统上含义不同。 在Linux系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。在windows操作系统上,time.clock() 返回第一次调用该方法到现在的秒数,其精确度高于1微秒。可以使用该函数来记录程序执行的时间。

  总结一下该函数有两个功能:
  在第一次调用的时候,返回的是程序运行的实际时间;
  以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔



>>> clock()
1.655286571487689e-06   #第一次调用是程序运行时间
>>> clock()
8.366160976619078  #第二次调用是与第一次的时间间隔
>>> clock()    #第三次调用是与第一次的时间间隔
12.056175791433892
>>> sleep(1)
  
   总结一下:
  (1)、常见应用
      1)、获取当前时间:
     time.time() 获取当前时间戳
   time.localtime() 当前时间的struct_time形式
   time.ctime() 当前时间的字符串形式
      2)、将时间戳转换为字符串:
    time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
      3)、将字符串转换为时间戳:
    time.mktime(time.strptime('2013-06-06 09:00','%Y-%m-%d %H:%M'))
  (2)、在Python中共有三种表达方式以及这三种方式之间的转换:
     1)、timestamp
     2)、tuple或者struct_time
     3)、格式化字符串。
   DSC0000.jpg
  当然time模块还有其它函数,目前还没用到,用到再进行补充。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58683-1-1.html 上篇帖子: 十分钟学会Python 下篇帖子: python中的生成器(generator)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表