• Python——time模块


    python中有许多关于时间的模块,这里记录一下。

    💦 基本概念

    ☁️ 时间戳

    首先得介绍一下时间戳的概念:啥是时间戳呢?官方地讲,就是一个能表示一份数据再某个特定时间之前已经存在的、完整的、可验证的数据。那么通俗一点地讲,就是指格林尼治时间1970年01月01日00时00分00秒到现在的总秒数

    ☁️ 格式化符号

    为了后面的理解,我们需要直到python中经常使用到的一些特殊的符号来格式化时间日期,类似于字符串格式化中的“ %s ”、“ %d ”等。

    符号含义
    %y两位数的年份表示(00~99)
    %Y四位数的年份表示(0000~9999)
    %m月份(01~12)
    %d月内的一天
    %H24小时制的小时数(0~23)
    %I12小时制的小时数(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当前时区的名称

    上面是否看得你眼花缭乱?没错,我也是
    在这里插入图片描述
    别急!下面还有一点点

    ☁️ 时间元组

    python中很多函数用一个元组装起来的九组数字处理时间:

    序号字段:值
    04位数的年2022
    11~12
    21~31
    3小时0~23
    4分钟0~59
    50~61
    6一周的第几日0~6(0是周一)
    7一年的第几日1~366(儒略历)
    8夏令时-1,0,1(-1是决定是否为夏令时的旗帜)

    上面的元组也就是time模块中的struct_time对象,这种结构具有如下属性:

    序号属性
    0tm_year2022
    1tm_mon1~12
    2tm_mday1~31
    3tm_hour0~23
    4tm_min0~59
    5tm_sec0~61(60或61是闰秒)
    6tm_wday0~6
    7tm_yday1~366(儒略历)
    8tm_isdst-1,0,1(夏时令)

    害,这东西可是真多啊。啥又是儒略历,啥又是夏令时?对此我也是很费解啊,赶紧去百度了一下。
    在这里插入图片描述
    儒略历:就是公历的前身,一年被划分为12个月,大小月交替;四年一闰,平年365日,闰年366日为在当年二月底增加一闰日,年平均长度为365.25日。但是在实际使用过程中导致积累的误差随时间越来越大,就变成公历了~~

    夏时令:这个就是人为地规定的为节约能源的制度。大概就是在夏季的时候,人为将时间提前一小时,减少照明量…我国以前也实行过,不过后来就取消了。

    好了好了,科普结束,回到正题
    在这里插入图片描述
    首先要说明一点啊,日期和时间的区别啊,我现在的理解大概就是日期是年月日,时间呢就是时分秒,以前我老是分不清楚。

    💦 time模块

    time模块中呢,就主要介绍几个常用的函数。

    ☁️ time()

    time函数用于返回当前时间的时间戳,没错,就是那个啥格林尼治时间到现在的秒数。记录一下现在的时间是2022.8.30 22:00,请看下面例子👇:

    import time
    
    a = time.time()
    print(a)
    #1661868092.4191587
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以看出,它返回的是一个浮点数

    ☁️ localtime()

    该函数是将时间戳格式化为本地时间,返回struct_time对象。它有一个参数用于接收时间戳,如果调用函数时不提供时间戳(注意是提供秒数哦,很大的😑),它会默认使用当前时间戳。例如👇:

    import time
    
    a = time.localtime()
    print(a)
    #time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=11, tm_sec=49, tm_wday=1, tm_yday=242, tm_isdst=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    import time
    
    a = time.localtime(0)
    print(a)
    #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以看到如果提供0的时间戳,它返回的就恰好是那个格林尼治时间。同时它返回的也是struct_time类型。

    ☁️ mktime()

    它接收struct_time对象作为参数,它返回的是用秒数来表示时间的浮点数(该浮点数小数后面全是0,前面time.time()返回的浮点数小数后面就不全为0),就是从格林尼治时间到某年某月某日某时某分某秒的秒数。它的参数可以是结构化的时间。

    import time
    
    a = (2022,8,30,22,19,40,1,1,0)
    print(time.mktime(a))
    #1661869180.0
    print(time.localtime(time.mktime(a)))
    #time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=22, tm_min=19, tm_sec=40, tm_wday=1, tm_yday=242, tm_isdst=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以看出,mktime函数可以用时间元组作为参数,也可以使用time_struct对象作为参数。

    ☁️ gmtime()

    它能将一个时间戳转换为UTC的struct_time,参数为时间戳,默认参数为当前时间戳(也就是time.time())。那么,啥是UTC?科普时间到!

    UTC,协调世界时,也叫世界标准时间,它是以原子时秒长在时刻上尽量接近于世界时的一种时间计量系统。具体的你们得就去问度娘了~~😊
    例如👇:

    import time
    
    print(time.gmtime())
    #time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=14, tm_min=34, tm_sec=26, tm_wday=1, tm_yday=242, tm_isdst=0)
    print(time.gmtime(0))
    #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ☁️ asctime()

    它接收时间元组并返回一个形式为“ Tue Aug 30 22:36:35 2022 ”的24个字符的字符串(空格也要算)。它接收的参数可以是时间元组也可以是time_struct对象。例如👇:

    import time
    
    a = (2022,8,30,22,36,35,1,1,0)
    print(time.asctime(a))
    #Tue Aug 30 22:36:35 2022
    print(time.asctime(time.localtime()))
    #Tue Aug 30 22:39:44 2022
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    我是结合自身这边时间来做的哈。

    ☁️ ctime()

    它能把一个时间戳转化为time.asctime()形式。参数为时间戳,默认为当前时间戳(也就是time.time()),它的作用相当于执行time.asctime(localtime())。(哎,不得不吐槽一句,这是真复杂啊)例如👇:

    import time
    
    print(time.ctime())
    #Tue Aug 30 22:42:52 2022
    
    • 1
    • 2
    • 3
    • 4

    ☀️ sleep()

    这个函数是重点啊,圈起来圈起来。

    它用于推迟调用线程的运行,参数为秒数,表示进程挂起的时间。也就是我让你睡多久你就必须睡多久!例如👇:

    import time
    
    print("进程睡觉前:%s" % time.ctime())
    time.sleep(5)
    print("进程起床后:%s" % time.ctime())
    #进程睡觉前:Tue Aug 30 22:47:35 2022
    #进程起床后:Tue Aug 30 22:47:40 2022
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ☁️ strftime()

    它有两个参数,一个是format格式化符号,另一个是就是时间元组,并返回以一个字符串表示的当地时间,格式由参数format决定,也就是前面的格式化符号。例如👇:

    import time
    
    a = (2022,8,30,23,3,11,1,1,0)
    b = time.mktime(a)
    print(time.strftime("%b %d %Y %H:%M:%S",time.gmtime(b)))
    #Aug 30 2022 15:03:11
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ☁️ strptime()

    根据指定的格式把一个时间字符串解析为时间元组(time_struct对象)。它有两个参数,一个是字符串,另一个是format格式化符号,例如👇:

    import time
    
    a = time.strptime("Aug 30 2022 23:06:54","%b %d %Y %H:%M:%S")
    print(a)
    #time.struct_time(tm_year=2022, tm_mon=8, tm_mday=30, tm_hour=23, tm_min=6, tm_sec=54, tm_wday=1, tm_yday=242, tm_isdst=-1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    time模块到这里就结束啦。不仅是自己复习一遍,也希望能对大家有所帮助。
    在这里插入图片描述

  • 相关阅读:
    Docker-in-Docker(DinD)
    gitlab
    timescaledb学习
    深入理解 Python 描述符
    二叉树操作题
    【面试经典150 | 哈希表】快乐数
    day03 Docker基本使用
    Alibaba Cloud Linux 3.2104 LTS 64位 怎么安装python3.10.12和pip3.10
    Go 常用标准库之 fmt 介绍与基本使用
    (3) OpenCV图像处理kNN近邻算法
  • 原文地址:https://blog.csdn.net/weixin_62917800/article/details/126612729