欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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