温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python常用时间库time、datetime与时间格式之间如何转换

发布时间:2023-02-25 14:00:44 来源:亿速云 阅读:103 作者:iii 栏目:开发技术

这篇“python常用时间库time、datetime与时间格式之间如何转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python常用时间库time、datetime与时间格式之间如何转换”文章吧。

    一,python中储存时间的三种格式

    1,时间元组(结构体时间)

    共有九个元素组

    python常用时间库time、datetime与时间格式之间如何转换

    2,时间戳

    时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

    3,格式化时间

    已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

    二、time库

    1,time.time()

    创建时间戳
    返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

    import time
    
    # 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
    temp = time.time()
    print(temp,type(temp))
    # -----out------
    # 1567667448.120967 <class 'float'>

    2,time.localtime([ sec ])

    创建结构体时间 | 将时间戳转换为结构体时间(本地)
    格式化时间戳为本地的时间,返回结构体时间。若sec参数未输入,则以当前时间为转换。

    import time
    
    # 1,localtime中加入时间戳参数
    temp = time.time()
    # localtime输入时间戳参数,将时间戳转化为本地时间
    locaoltime = time.localtime(temp)
    print(locaoltime,type(locaoltime))
    
    time.sleep(3)
    
    
    # 2,localtime未输入参数时,默认为当时时间
    print(time.localtime(),type(time.localtime()))
    # -----out------
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=15, tm_min=44, tm_sec=4, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=15, tm_min=44, tm_sec=7, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>

    3,time gmtime([ sec ])

    将时间戳转换为结构体时间(0时区)
    将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1以来的秒数。其默认值为time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象)。

    import time
    temp = time.time()
    
    # localtime输入时间戳参数,将时间戳转化为本地时间
    print(time.localtime(temp),type(time.localtime(temp)))
    
    # gmtimee输入时间戳参数,将时间戳转换为UTC时区
    print(time.gmtime(temp),type(time.gmtime(temp)))
    # -----out------
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=17, tm_min=8, tm_sec=57, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=9, tm_min=8, tm_sec=57, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>

    4,time.strftime(format[, t])

    将结构体时间转换为字符串
    输入结构体时间,输出为按照输入的格式的字符串

    import time
    
    # 输入结构体时间,输出为按照输入的格式的字符串
    temps = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print(temps,type(temps))
    # -----out------
    # 2019-09-05 17:12:34 <class 'str'>

    5,time.strptime(string[, format])

    将字符串转换为结构体时间
    根据指定的格式把一个时间字符串解析为结构体时间。

    import time
    
    # 输入结构体时间,输出为按照输入的格式的字符串
    temps = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print(temps,type(temps))
    strs = temps
    
    # 输入字符串,按照参数指定格式,输出结构体时间
    temps = time.strptime( strs,"%Y-%m-%d %H:%M:%S")
    print(temps,type(temps))
    # -----out------
    # 2019-09-05 16:20:58 <class 'str'>
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=16, tm_min=20, tm_sec=58, tm_wday=3, tm_yday=248, tm_isdst=-1) <class 'time.struct_time'>

    6,time mktime(t)

    将结构体时间转换为时间戳 接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。
    如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。

    import time
    
    # 输入结构体时间,返回时间戳
    time_temps = time.mktime(time.localtime())
    print(time_temps,type(time_temps))
    # -----out------
    # 1567672723.0 <class 'float'>

    7,time.sleep(nums)

    推迟执行的秒数,没有任何输出

    import time
    
    # 推迟执行的秒数,没有任何输出
    temp = time.sleep(3)
    print(temp,type(temp))
    # -----out------
    # None <class 'NoneType'>

    8,timeit.Timer.timeit([number])

    用来计算一个函数平均执行了多少时间

    # coding=gbk
    import timeit
    
    def T1():
        '''表内置属性'''
        li = []
        for i in range(1000):
            li.append(i)
    
    def T2():
        '''列表拼接'''
        li = []
        for i in range(1000):
            li = li + [i]
    
    def T3():
        '''列表推导式'''
        li = [i for i in range(1000)]
    
    def T4():
        '''属性转换'''
        li = list(range(1000))
    
    if __name__ == "__main__":
        test_list = ['T1()','T2()','T3()','T4()']
        for i in test_list:
            timer = timeit.Timer(i,"from __main__ import T1,T2,T3,T4")
            print("%s: %f seconds" % (i,timer.timeit(number=1000)))

    三,datetime库

    datetime模块包含如下类

    python常用时间库time、datetime与时间格式之间如何转换

    1,datetime.date类

    表示日期的类,常用的属性有year、month、day。参数都为整数。

    import datetime
    import time
    
    # 1,以下为两种生成日期的方式,效果一致,返回datetime类型
    someday = datetime.date(year=2018, month=1, day=1)
    someday = datetime.date(2018, 1, 1)
    print(someday,type(someday))
    
    # 2,以规定的格式返回日期,返回字符串类型
    temp = someday.strftime('/%Y/%m/%d')
    print(temp,type(someday))
    
    # 3,以默认的格式返回日期
    print(someday.isoformat())
    
    # 4,获得今天日期,返回datetime类型
    temp = datetime.date.today()
    print(temp,type(temp))
    
    # 5,根据给定的时间戮,返回一个date对象
    temp = datetime.date.fromtimestamp(time.time())
    print(temp)
    # -----out------
    # 2018-01-01 <class 'datetime.date'>
    # /2018/01/01 <class 'datetime.date'>
    # 2018-01-01
    # 2019-09-05 <class 'datetime.date'>
    # 2019-09-05

    2,datetime.time类

    表示时间的类,参数包括hour、minute、second、microsecond。 time类的方法同datetime类。

    import datetime
    import time
    
    # 1,以下为两种生成时间的方式,效果一致,返回datetime类型
    someday = datetime.time(hour=12,minute=50,second=12,microsecond=10)
    someday = datetime.time(12, 50, 12, 10)
    print(someday,type(someday))
    
    # 2,以规定的格式返回时间,返回字符串类型
    temp = someday.strftime('%H::%M::%S')
    print(temp,type(temp))
    #
    # 3,以默认的格式返回时间
    print(someday.isoformat(),type(someday))
    # -----out------
    # 12:50:12.000010 <class 'datetime.time'>
    # 12::50::12 <class 'str'>
    # 12:50:12.000010 <class 'datetime.time'>

    3,datetime.datetime类

    日期实践类,常用的参数包含year、month、day、hour、minute、second、microsecond。但是至少要包含year、month、day三个参数。

    import datetime
    import time
    # 1,以下为两种生成日期时间的方式,效果一致,返回datetime类型
    someday = datetime.datetime(year=2018,month=1,day=1,hour=12,minute=50,second=12,microsecond=10)
    someday = datetime.datetime(2018, 1, 1, 12, 50, 12, 10)
    print(someday,type(someday))
    
    # 2,以规定的格式返回日期时间,返回字符串类型
    temp = someday.strftime('%Y-%m-%d %H:%M:%S')
    print(temp,type(temp))
    
    # 3,以默认的格式返回日期时间
    print(someday.isoformat(),type(someday))
    
    # 4,datetime类.timetuple()将datetime转化为结构体时间;再通过time.mktime()装换为时间戳
    dtime = datetime.datetime.now()
    print(dtime.timetuple(),type(dtime.timetuple()))
    un_time = time.mktime(dtime.timetuple())
    print(un_time,type(un_time))
    
    # 5,时间戳转换为python的datetime
    times = datetime.datetime.fromtimestamp(un_time)
    print(times,type(times))
    
    # 6,将datetime类转换为格式化时间,datetime类.strftime(format).
    now_time = datetime.datetime.now()
    now_time = now_time.strftime('%Y-%m-%d %H:%M:%S')
    print(now_time,type(now_time))
    
    # 7,将格式化时间转换为datetime类,datetime.datetime.strptime(string,format)
    d2 = datetime.datetime.strptime(now_time, '%Y-%m-%d %H:%M:%S')
    print(d2,type(d2))
    # -----out------
    # 2018-01-01 12:50:12.000010 <class 'datetime.datetime'>
    # 2018-01-01 12:50:12 <class 'str'>
    # 2018-01-01T12:50:12.000010 <class 'datetime.datetime'>
    # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=6, tm_hour=11, tm_min=13, tm_sec=59, tm_wday=4, tm_yday=249, tm_isdst=-1) <class 'time.struct_time'>
    # 1567739639.0 <class 'float'>
    # 2019-09-06 11:13:59 <class 'datetime.datetime'>
    # 2019-09-06 11:13:59 <class 'str'>
    # 2019-09-06 11:13:59 <class 'datetime.datetime'>

    4,datetime.timedelta类

    表示时间间隔类,给一个时间点加上此类,即可得到一个新的时间。参数包含days、hours、minutes、seconds、microseconds。

    import datetime
    
    # 以下为1天零1小时零1分零1秒又10毫秒的时间间隔
    datetime.timedelta(days=1,hours=1,minutes=1,seconds=1,microseconds=10)
    datetime.timedelta(1, 3661, 10)
    
    # 以下为35天间隔
    datetime.timedelta(days=35)
    datetime.timedelta(35)
    
    # 1,当前时间和日期
    print(datetime.datetime.now())
    
    # 2,根据指定日期、相隔时间计算出对应目标时间
    temp= datetime.datetime.now()-datetime.timedelta(days=67)
    print(temp)
    print(datetime.datetime.now()-datetime.timedelta(hours=10,days=1))
    # -----out------
    # 2019-09-05 20:05:30.396688
    # 2019-06-30 20:05:30.396688
    # 2019-09-04 10:05:30.396688

    四,time模块和datetime模块之间的相互转换

    # coding=utf-8
    import time
    import datetime
    
    def get_time():
        # 获取当前datetime类型时间
        now_time = datetime.datetime.now()
        # 当前时间减去一天 获得昨天当前时间
        yes_time = now_time + datetime.timedelta(days=-1)
        # 格式化输出
        yes_time_str = yes_time.strftime('%Y-%m-%d %H:%M:%S')
        print (yes_time_str)  # 2017-11-01 22:56:02
    
    def dif_time():
        # 使用datetime类型计算两个时间之间差值
        now_time = datetime.datetime.now()
        now_time = now_time.strftime('%Y-%m-%d %H:%M:%S')
        d1 = datetime.datetime.strptime('2017-10-16 19:21:22', '%Y-%m-%d %H:%M:%S')
        d2 = datetime.datetime.strptime(now_time, '%Y-%m-%d %H:%M:%S')
        #间隔天数
        day = (d2 - d1).days
        #间隔秒数
        second = (d2 - d1).seconds
        print (day)   #17
        print (second)  #13475  注意这样计算出的秒数只有小时之后的计算额 也就是不包含天之间差数
    
    def unix_time():
        #将python的datetime转换为unix时间戳
        dtime = datetime.datetime.now()
        un_time = time.mktime(dtime.timetuple())
        print (un_time)  
        #将unix时间戳转换为python的datetime
        unix_ts = 1509636585.0
        times = datetime.datetime.fromtimestamp(unix_ts)
        print (times)  #2017-11-02 23:29:45
    
    if __name__ == "__main__":
        get_time()
        dif_time()

    五,附录

    python常用时间库time、datetime与时间格式之间如何转换

    以上就是关于“python常用时间库time、datetime与时间格式之间如何转换”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI