在开始之前,首先要说明这几点:
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 |
转化图:
time模块的核心函数time(),它返回纪元开始的秒数,返回值为浮点数,具体精度依赖于平台。
1 import time 2 time.time() 3 1468204341.421
浮点数一般用于存储和比较日期,但是对人类不友好,要记录和打印时间,可以使用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
>>>import time >>>time.timezone/3600 -8
ZONES = ["GMT", "EUROPE/Amsterdam‘] for zone in ZONES: os.environ["TZ"] = zone time.tzset()
time模块提供了两个函数strptime()和strftime(),可以在struct_time和时间值字符串之间转换。
用于将字符串时间转换成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)
用于时间的格式化输出
>>> from time import gmtime, strftime >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) ‘Thu, 28 Jun 2001 14:17:15 +0000‘
用于将struct_time转换成时间的浮点数表示
>>>from time import mktime, gmtime >>>mktime(gmtime()) 1460573789.0
sleep函数用于将当前线程交出,要求它等待系统将其再次唤醒,如果写程序只有一个线程,这实际上就会阻塞进程,什么也不做。
import time def fucn(): time.sleep(5) print "hello, world"
执行上面的代码,将等待5秒钟之后再输出信息。
原文:http://www.cnblogs.com/chushiyaoyue/p/5659479.html