python-time模块

time介绍

在开始之前,首先要说明这几点:

1.在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
2.UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
3.时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。
4.元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:

 

索引(Index) 属性(Attribute)值(Values)
0 tm_year(年) 比如2011
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

转化图:

一.壁挂钟时间

1.time()

time模块的核心函数time(),它返回纪元开始的秒数,返回值为浮点数,具体精度依赖于平台。

1 import time
2 time.time()
3 1468204341.421

2.ctime()

浮点数一般用于存储和比较日期,但是对人类不友好,要记录和打印时间,可以使用ctime()。

>>> later = time.time()+5
>>> time.ctime(later)
'Mon Jul 11 09:46:22 2016'
>>> time.ctime()
'Mon Jul 11 09:46:35 2016'
>>> later = time.time()+50
>>> time.ctime()
'Mon Jul 11 09:46:47 2016'
>>> time.ctime(later)
'Mon Jul 11 09:47:34 2016'

二.处理器时钟时间

clock()返回处理器时钟时间,它的返回值一般用于性能测试与基准测试。因此它们反映了程序的实际运行时间。

>>>import time
>>>time.clock()
0.07

三.时间组成

time模块定义了struct_time来维护时间和日期,其中分开存储各个组成部分,以便访问。

def show_struct(s):
    print 'tm_year:',s.tm_year
    print 'tm_mon:',s.tm_mon
    print 'tm_mday:',s.tm_mday
    print 'tm_hour:',s.tm_hour
    print 'tm_min:',s.tm_min
    print 'tm_sec:',s.tm_sec
    print 'tm_wday:',s.tm_wday
    print 'tm_yday:',s.tm_yday

if __name__ == '__main__':
    # a = '2016-07-07 00:00:00'
    # b = '2016-07-06 00:00:00'
    #print ISOString2Time(a)
    #print ISOString2Time(b)
    show_struct(time.gmtime())
    print '*'*50
    show_struct(time.localtime())

gmtime()用于获取UTC时间,localtime()用于获取当前时区的当前时间,UTC时间实际就是格林尼治时间,它与中国时间的时差为八个小时。

locatime() = gmtime() + 8hour

四.处理时区

1.获取时间差

>>>import time
>>>time.timezone/3600
-8

2.设置时区

ZONES = ["GMT", "EUROPE/Amsterdam']
for zone in ZONES:
      os.environ["TZ"] = zone
      time.tzset()

五.解析和格式化时间

time模块提供了两个函数strptime()和strftime(),可以在struct_time和时间值字符串之间转换。

1.strptime()

用于将字符串时间转换成struct_time格式:

>>> now=time.ctime()
>>> time.strptime(now)
time.struct_time(tm_year=2016, tm_mon=4, tm_mday=14, tm_hour=10, tm_min=48, tm_sec=40, tm_wday=3, tm_yday=105, tm_isdst=-1)

2.strftime()

用于时间的格式化输出

>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'

3.mktime()

用于将struct_time转换成时间的浮点数表示

>>>from time import mktime, gmtime
>>>mktime(gmtime())
1460573789.0

六.sleep()

sleep函数用于将当前线程交出,要求它等待系统将其再次唤醒,如果写程序只有一个线程,这实际上就会阻塞进程,什么也不做。

import time
def fucn():
      time.sleep(5)
      print "hello, world"

执行上面的代码,将等待5秒钟之后再输出信息。

posted @ 2016-07-12 21:13  楚时邀月  阅读(707)  评论(0编辑  收藏  举报