Python3 time模块
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