Python中的time、datetime、calendar模块(时间模块)
程序员文章站
2022-07-14 23:20:53
...
时间模块
时间间隔:是以秒为单位的浮点数
时间戳: 从1970.1.1 00:00:00 开始到指定时间的秒数
1.time模块
UTC : 格林威治天文时间,世界标准时间,在中国UTC+8
DST: 夏令时
时间的表示形式:
① 时间戳: 以整型或者浮点型表示的一个以秒为单位的时间间隔,从1970.1.1 00:00:00 开始到指定时间的秒数
② 元组形式 :
时间的元组形式【year:年,month:月,day:天,hour:时,minutes:分,seconds:秒,weekday:星期,day in year: 一年中的第几天,isdst:是否是夏令时(0表示正常格式,1表示夏令时格式,-1表示自定义格式)】
注意:mouth的取值范围:1~12 weekday的取值范围:0~6,0表示星期一
③ 字符串形式:
使用格式化的方式表示时间,%Y:年份 %m:月份 %d:日 %M:分钟 %h:【12小时制】 %H:【24小时制】 %s:秒
1.1time模块常用的方法
import time '''时间的获取''' # 1.返回当前时间的时间戳,结果为一个浮点数 t1 = time.time() print(t1) # 2.获取UTC的元组形式 t2 = time.gmtime() print(t2) # 3.获取本地时间的元组形式 t3 = time.localtime() print(t3) '''时间相互之间的转换''' # 4.将时间的元组形式转换为时间戳形式 t4 = time.mktime(t3) print(t4) # 5.将时间的元组形式转换为字符串形式 t5 = time.asctime(t3) print(t5) # 6.将时间戳形式转换为字符串形式 t6 = time.ctime(t4) print(t6) # 7.将时间的元组形式转换为字符串形式:自定义格式 t7 = time.strftime("%Y-%m-%d", t3) print(t7) # 8.将时间的字符串形式转换为元组形式 # 注意:时间的字符串必须和时间的格式保持完全一致,否则报错 t8 = time.strptime("2020-2-20", "%Y-%m-%d") print(t8) """ 时间戳 <---- 元组 时间戳 ----> 字符串 元组 <---> 字符串 """ # 9.休眠 print("start~~~~") # 作用: 会让代码暂停【阻塞】,当指定的时间达到之后,则会自动解除阻塞,代码继续向下执行 time.sleep(5) print("end~~~~")
运行结果
""" 1600594967.5052955 time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=9, tm_min=42, tm_sec=47, tm_wday=6, tm_yday=264, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=17, tm_min=42, tm_sec=47, tm_wday=6, tm_yday=264, tm_isdst=0) 1600594967.0 Sun Sep 20 17:42:47 2020 Sun Sep 20 17:42:47 2020 2020-09-20 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=51, tm_isdst=-1) start~~~~ end~~~~ """
1.2使用time模块的小例子
(1)写一个装饰器,可以统计任意一个函数的执行时间
import time def countRunTime(func): def inner(*args, **kwargs): start = time.time() # 调用原函数 func() end = time.time() print("程序执行总花费了:%f秒" % (end - start)) return inner() @countRunTime def testFunc(): print("program ~~~~ strat") time.sleep(5) print("program ~~~ end ")
运行结果:
""" program ~~~~ strat program ~~~ end 程序执行总花费了:5.000759秒 """
(2) 有一个时间字符串,如:1999/9/9,输出三天之后的日期1999/9/12
str1 = "1999/9/9" # 将时间的字符串转换为元组 time1 = time.strptime(str1, "%Y/%m/%d") # 将时间的元组形式转换为时间戳 time2 = time.mktime(time1) # 进行加法运算 time3 = time2 + 3 * 24 * 3600 # 将时间戳转换为时间元组 time4 = time.localtime(time3) # 将时间元组转化为字符串格式 time5 = time.strftime("%Y/%m/%d", time4) print(time5) # 可以简化所有的代码 time_1 = time.strftime("%Y/%m/%d", time.localtime(time.mktime(time.strptime(str1, "%Y/%m/%d")) + 3 * 24 * 3600)) print(time_1)
运行结果:
""" 1999/09/12 1999/09/12 """
持续更新,datetime、calendar模块