Python3 time模块

  • Post author:
  • Post category:python


import time
print(help(time)) # 显示time模块全文本
Functions: # 执行结果

time() -- return current time in seconds since the Epoch as a float
以浮点数返回以秒计算的从1970年到现在为止的时间,time.time()常用于获取当前时间
time.time() # 这个函数无参数
print(time.time()) # 1512195215.1153893

clock() -- return CPU time since process start as a float
以浮点数返回CPU运行当前程序所需要的时间
time.clock() # 这个函数无参数
print(time.time()) # 1512195308.783902

sleep() -- delay for a number of seconds given as a float
程序在此停顿多少秒,参数为浮点数
time.sleep(seconds) # 有一个名为seconds(秒)的参数,是浮点型参数, 执行这个函数必须输入seconds参数,否则无效
time.sleep(1.1111111)

gmtime() -- convert seconds since Epoch to UTC tuple
接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组
time.gmtime(seconds) # 有一个名为seconds(秒)的参数,是浮点型,可传入可为空,为空时显示当前世界标准时间
print(time.gmtime()) # time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=6, tm_min=24, tm_sec=13, tm_wday=5, tm_yday=336, tm_isdst=0)
print(time.gmtime(1.00000000000000001)) # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)
tm_year为年, tm_mon为月, tm_mday为日, tm_hour世界标准时间小时, tm_min分, tm_sec秒, tm_wday世界标准时间星期, tm_yday为一年的第多少天, tm_isdst为夏令时
print(time.gmtime().tm_year) # 2017
print(time.gmtime().tm_mon) # 12
tm_year 2008
tm_mon 1 到 12
tm_mday 1 到 31
tm_hour 0 到 23
tm_min 0 到 59
tm_sec 0 到 61 (60或61 是闰秒)
tm_wday 0到6 (0是周一)
tm_yday 一年中的第几天,1 到 366
tm_isdst 是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1
重点!
print(time.gmtime()) # time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=15, tm_min=31, tm_sec=47, tm_wday=5, tm_yday=336, tm_isdst=0)
a = tuple(time.gmtime())
print(type(a)) # <class 'tuple'>
print(a) # (2017, 12, 2, 15, 33, 58, 5, 336, 0)
time.gmtime() 与 time.localtime() 取得的数据可以直接转换为元组!

localtime() -- convert seconds since Epoch to local time tuple
接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组(tm_isdst可取0或1,取决于当地当时是不是夏令时)
time.localtime(seconds) # 有一个名为seconds(秒)的参数,是浮点型,可传入可为空,为空时显示当前世界标准时间
print(time.localtime()) # time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=14, tm_min=41, tm_sec=30, tm_wday=5, tm_yday=336, tm_isdst=0)
print(time.localtime(1.00000001)) # 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)
print(time.localtime().tm_wday) # 5 # localtime并没有将tm_wday=5, tm_yday=336转成本地日期,因为发文时是星期6,tm_wday与tm_year分别应为6,337
print(time.gmtime().tm_wday) # 5
localtime() 与gmtime() 唯一的不同只是时区显示的不同

asctime() -- convert time tuple to string
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。同时将时间转化为了ASCII码。
time.asctime(tuple) # 有一个名为tuple的参数。该参数可以为空,为空时显示当前本地时间。如果参数不为空,则元组必须要有9个参数,示例类型为:(2017, 12, 2, 23, 36, 0, 5, 336, 0),否则报错!
print(time.asctime()) # Sat Dec 2 15:06:47 2017 以此种方式显示本地时间
以下为示例:
a = tuple(time.localtime())
print(a) # (2017, 12, 2, 23, 36, 0, 5, 336, 0)
print(time.asctime(a)) # Sat Dec 2 23:34:43 2017
print(time.asctime((2017, 12, 2, 23, 36, 0, 5, 336, 0))) # Sat Dec 2 23:36:00 2017
print(time.asctime(time.gmtime())) # Sat Dec 2 23:39:18 2017
print(time.asctime(time.localtime())) # Sat Dec 2 23:39:18 2017
time.asctime()最好结合time.gmtime() 与 time.localtime() 使用。最好别自己打个含有9个数据的元组传到time.asctime()中,这样容易出错!

ctime() -- convert time in seconds to string
将时间缀记录的时间转化Sat Dec 2 15:22:24 2017这种格式的字符串
作用相当于asctime(localtime(secs)),未给参数相当于asctime()
time.ctime(seconds) # 有一个名为seconds(秒)的参数,是浮点型,可传入参数也可为空,为空时相当于asctime()
print(type(time.ctime())) # <class 'str'>
print(time.ctime()) # Sat Dec 2 15:22:24 2017
print(time.ctime(1.0001)) # Thu Jan 1 08:00:01 1970 这个时间是按本地时间算出的
time模块中只有time.time()能获取一个seconds格式的时间缀

mktime() -- convert local time tuple to seconds since Epoch
接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)
time.mktime(tuple)有一个名为tuple的参数。该参数不能为空。
可接收time.gmtime() 和 time.localtime() 的参数
print(time.mktime(time.gmtime())) # 1512201669.0
print(time.mktime(time.localtime())) # 1512201700.0
print(time.mktime((2017, 12, 2, 23, 36, 0, 5, 336, 0))) # 1512228960.0

strftime() -- convert time tuple to string according to format specification 格式化输出时间函数
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
time.strftime(format, tuple)函数有两个参数,format参数自己定义自己的格式,tuple格式可以通过time模块中的time.gmtime() 与time.localetime() 或者直接传入正确的9元素元组来进行参数录入。
参数中format参数必须存在,tuple为空则取当前时间。
help(time.strftime)
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.
相关汉化:
%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 当前时区的名称
%% %号本身
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2017-12-03 00:18:10
print(time.strftime("%y-%Y-%m-%d-%H-%I-%M-%S-%a-%A-%b-%B-%c-%j-%p-%U-%w-%W-%x-%W-%x-%X-%Z-%%")) # 17-2017-12-03-00-12-22-01-Sun-Sunday-Dec-December-Sun Dec 3 00:22:01 2017-337-AM-49-0-48-12/03/17-48-12/03/17-00:22:01-?D1¨²¡À¨º¡Á?¨º¡À??-%
format参数必须为%y;%Y;%m;%d;%H;%I;%M;%S;%a;%A;%b;%B;%c;%j;%p;%U;%w;%W;%x;%W;%x;%X;%Z;%%这类格式,怎么格式化输出自己定义。


strptime() -- parse string to time tuple according to format specification 格式化输出时间函数
根据fmt的格式把一个时间字符串解析为时间元组。
time.strptime(string, format)函数有两个参数
print(time.strptime("Thu Jan 1 08:00:01 1970",)) # 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=-1)
print(time.strptime("30 Nov 00", "%d %b %y")) # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
print(time.strptime("30 Nov 00", "%d %b %y")) # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
print(time.strptime("00 Nov 30", "%y %b %d")) # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
print(time.strptime("Nov 00 30", "%b %y %d")) # time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
string的顺序可以调换,相应的format的参数顺序也需要进行相对应的调换,都能进行输出。
print(time.strptime(time.strftime(time.asctime()))) # time.struct_time(tm_year=2017, tm_mon=12, tm_mday=3, tm_hour=0, tm_min=58, tm_sec=57, tm_wday=6, tm_yday=337, tm_isdst=-1) 这种情况下可以只传string参数不传format参数


tzset() -- change the local timezone
Python time tzset() 根据环境变量TZ重新初始化时间相关设置。
这个好像很重要,但我没太看了,自己掌握吧,略!


参考:http://www.runoob.com/python3/python3-date-time.html

转载于:https://www.cnblogs.com/fengbo1113/p/7957431.html