在写程序的时候经常会和时间打交道,在python中有自己内嵌的时间模块time,可以帮助我们很简单的处理时间,下面记录一下python的time模块常用的地方。
首先说一下time模块表示时间的方式,一般来说有两种,第一种是时间戳(timestamp)的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的;
第二种以元组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同。
以元组形式表示的时间:time.struct_time(tm_year=2014(年), tm_mon=4(月), tm_mday=11(日), tm_hour=21(时), tm_min=54(分), tm_sec=29(秒), tm_wday=4(周), tm_yday=101(一年中的第几天), tm_isdst=0(是否启用夏令时))
下面介绍一些常用的参数
1、
>>> time.time() 1397224868.375651
返回当前的时间戳
2、
>>> time.mktime(time.localtime()) 1397224954.0
将struct_time格式的时间转换为时间戳格式
3、
>>> time.sleep(1) >>>
这个很显而易见了,用我们经常说的就是睡n秒再做后边的。也就是推迟指定的时间再运行。
4、
>>> time.asctime() 'Fri Apr 11 22:06:02 2014'
把一个表示时间的元组或者struct_time表示为这种形式:Fri Apr 11 22:06:02 2014,如果没有指定时间则默认为当前时间。
5、
>>> time.ctime() 'Fri Apr 11 22:07:56 2014' >>> time.ctime(time.time()) 'Fri Apr 11 22:08:16 2014'
把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
6、语法:
>>> time.strftime('%Y%m%d%H%M') '201404112211'
把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
语法:time.strftime(format[, t])
请注意后边的t,这里他支持元组的格式,请看最后一个例子:
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
>>> time.strftime('%Y%m%d%H%M %B_%a') '201404112213 April_Fri'
这里可以根据自己的需求去格式化
>>> time.strftime('%Y_%m_%d %H:%M:%S',time.localtime(os.path.getatime('/home/addam/aa/test.txt'))) '2014_04_11 21:30:30'
7、time.strptime(string[, format])
>>> time.strptime("20140412","%Y%m%d") time.struct_time(tm_year=2014, tm_mon=4, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=102, tm_isdst=-1)
把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。