Python中的time、datetime、calendar模块(时间模块)

时间模块

时间间隔:是以秒为单位的浮点数

时间戳: 从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模块

import datetime

# 1.获取当前时间
d1 = datetime.datetime.now()
print(d1)
print(type(d1))
"""
2020-09-21 18:06:20.772943
<class 'datetime.datetime'>
"""

# 2.获取指定时间【年,月,日,时,分,秒,毫秒】
d2 = datetime.datetime(2016, 6, 6, 6, 6, 6, 6666)
print(d2)
"""
2016-06-06 06:06:06.006666
"""

# 3.字符串和datetime类型之间的转换
d3 = datetime.datetime.now()
d4 = d3.strftime("%Y/%m/%d")
print(d4)
print(type(d4))
d5 = datetime.datetime.strptime(d4,"%Y/%m/%d")
print(d5)
print(type(d5))
"""
2020/09/21
<class 'str'>
2020-09-21 00:00:00
<class 'datetime.datetime'>
"""

# 4.datetime时间对象之间可以进行减法运算
date1 = datetime.datetime(2016, 6, 6, 6, 6, 6, 6666)
date2 = datetime.datetime(2016, 6, 10, 6, 20, 20, 6666)
result = date2 - date1
print(result)
print(result.days)
print(result.seconds)
"""
4 days, 0:14:14
4
854
"""

 

 calender模块

import calendar

# 1.打印某年某月的日历表
print(calendar.month(2016, 10))
"""
    October 2016
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
"""

# 2.直接打印某一年的日历表
print(calendar.calendar(2020))
"""
                                  2016

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7          1  2  3  4  5  6
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       7  8  9 10 11 12 13
11 12 13 14 15 16 17      15 16 17 18 19 20 21      14 15 16 17 18 19 20
18 19 20 21 22 23 24      22 23 24 25 26 27 28      21 22 23 24 25 26 27
25 26 27 28 29 30 31      29                        28 29 30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3                         1             1  2  3  4  5
 4  5  6  7  8  9 10       2  3  4  5  6  7  8       6  7  8  9 10 11 12
11 12 13 14 15 16 17       9 10 11 12 13 14 15      13 14 15 16 17 18 19
18 19 20 21 22 23 24      16 17 18 19 20 21 22      20 21 22 23 24 25 26
25 26 27 28 29 30         23 24 25 26 27 28 29      27 28 29 30
                          30 31

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7                1  2  3  4
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       5  6  7  8  9 10 11
11 12 13 14 15 16 17      15 16 17 18 19 20 21      12 13 14 15 16 17 18
18 19 20 21 22 23 24      22 23 24 25 26 27 28      19 20 21 22 23 24 25
25 26 27 28 29 30 31      29 30 31                  26 27 28 29 30

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                1  2  3  4
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       5  6  7  8  9 10 11
10 11 12 13 14 15 16      14 15 16 17 18 19 20      12 13 14 15 16 17 18
17 18 19 20 21 22 23      21 22 23 24 25 26 27      19 20 21 22 23 24 25
24 25 26 27 28 29 30      28 29 30                  26 27 28 29 30 31
31
"""

# 3.以二维的列表打印出日历
print(calendar.monthcalendar(2016, 10))
"""[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 
25, 26, 27, 28, 29, 30], [31, 0, 0, 0, 0, 0, 0]] """


"""
    4.判断某一年是不是闰年
"""
print(calendar.isleap(2016))
"""
True
"""

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值