• Python之time模块


    time模块

    • 是和时间相关操作的模块,如有:time模块、datatime模块

    一、方法

    (1)等待

     • 使用time.sleep()方法

    import time
    time.sleep(60) #等待60秒

    (2)时间类型转换概念

    1)时间戳:每个时间戳都是以计算机在1970年1月1日午夜(历元)诞生到现在经过了多长时间来表示(从计算机诞生那天到现在过了多少秒),每过一秒就会+1秒;

    2)格式化好的时间:2018-09-15 14:08:53

    3)为什么要使用时间戳?

    如果使用格式化好的时间,想知道在当前时间的前60天的具体时间,就不能直接加减了,这时候使用时间戳更方便,因为时间戳是直接相加减的。

    (3)获取当前的时间戳

    • 使用time.time()方法
    res=time.time() #获取当前的时间戳
    print(res)
    #结果为:1570715592.4129634
    #默认精确到毫秒,用的时候强制类型转换一下

    (4)获取当前格式化好的时间,并可以指定格式输出

    • 使用time.strftime()方法
    res=time.strftime('%y-%m-%d')  #获取当前时间
    print(res) #结果:19-10-10   y是小写的结果是19 Y是大写的结果是2019
    res=time.strftime('%Y-%m-%d %H:%M:%S')  #月份使用m 分钟使用M
    print(res) #结果:2019-10-10 21:58:14,注意时间都用大写字母,月份用小写字母

    (5)把时间元组转成格式化好的时间

    •  使用time.strftime()方法
    res2=time.strftime('%Y-%m-%d',res) #res为传入的时间元组值
    print(res2) #结果为:1970-09-02

    (6)把格式化好的时间转成时间元组

    •  使用time.strptime()方法
    time_tuple=time.strptime('1992-01-02','%Y-%m-%d') #把格式化好的时间转成时间元组
    #注意.strptime()里面的变量,后面的格式必须跟前面传的字符串的格式保持一致
    print(time_tuple)
    #结果为:time.struct_time(tm_year=1992, tm_mon=10, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=276, tm_isdst=-1

    (7)把时间戳转成时间元组

    •  使用time.gmtime()方法,获取的是标准时区的时间元组
    import time
    res = time.gmtime()
    print(res)
    
    结果:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=11, tm_hour=13, tm_min=18, tm_sec=56, tm_wday=4, tm_yday=284, tm_isdst=0)
    •  使用time.localtime()方法,获取的是当前时区的时间元组
    res=time.localtime()
    print(res)
    
    结果:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=11, tm_hour=21, tm_min=49, tm_sec=37, tm_wday=4, tm_yday=284, tm_isdst=0)

    二、时间格式之间的互相转换

    1、格式化好的时间转换成时间戳:

    (1)步骤

    1)先将格式化好的时间转成时间元组

    2)再将时间元组转成时间戳

    (2)使用方法

    •   使用time.strptime()方法,把格式化好的时间转成时间元组
    time_tuple=time.strptime('1992-06-21','%Y-%m-%d') #把格式化好的时间转成时间元组
    #注意.strptime()里面的变量,后面的格式必须跟前面传的字符串的格式保持一致
    print(time_tuple)
    #结果为:time.struct_time(tm_year=1992, tm_mon=6, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=173, tm_isdst=-1)
    •  使用time.mktime()方法,将时间元组转成时间戳
    time_tuple=time.strptime('19-04-24 14:41:05','%y-%m-%d %X')
    print(time.mktime(time_tuple))
    
    结果:1556088065.0

    2、时间戳转换成格式化好的时间戳:

    (1)步骤

    1)先将时间戳转成时间元组

    2)再将时间元组转成格式化好的时间

    (2)使用方法

    •   使用time.localtime()方法,把时间戳转成时间元组
    import time
    
    timestamp = 1571476513
    time_tuple = time.localtime(timestamp) #转换成时间元组
    print(time_tuple)
    
    结果:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=15, tm_sec=13, tm_wday=5, tm_yday=292, tm_isdst=0)
    •  使用time.strftime()方法,将时间元组转成格式化好的时间
    import time
    
    timestamp = 1571476513
    time_tuple = time.localtime(timestamp) #转换成时间元组
    result= time.strftime('%Y-%m-%d %H:%M:%S',time_tuple) #再把时间元组转换成格式化好的时间
    print(result)
    
    结果:2019-10-19 17:15:13

    实际应用

    • 封装一个函数,将时间戳转成转成格式化好的时间:
    def str_To_timestamp(time_str=None, format='%Y-%m-%d %H:%M:%S'):
        if time_str:  # 如果传了时间和格式,则返回所传时间的时间戳
            time_tuple = time.strptime(time_str, format)
            timestamp = time.mktime(time_tuple)
        else:  # 否则返回当前时间的时间戳
            timestamp = time.time()
        return int(timestamp)
    res = str_To_timestamp('2019-10-11 22:09:23')
    print(res)
    
    结果:1570802963
    • 封装一个函数,将格式化好的时间转化为时间戳:
    def str_to_timestamp(string=None,format='%Y-%m-%d %H:%M:%S'):
        '''格式化好的字符串转时间戳,默认返回当前时间戳'''
        if string:
            time_tuple = time.strptime(string, format)  # 格式化好的时间,转时间元组的
            result = time.mktime(time_tuple)  # 把时间元组转成时间戳
        else:
            result = time.time() # 获取当前时间戳
        return int(result)
    print(str_to_timestamp('2020-4-5 20:58:47'))
    
    结果:1586091527

    四、应用

    1、取50年后的时间:

    #如果要取到50年后的时间,就用当前的时间戳+50年的秒数,再使用这个函数
    fifty=str_to_timestamp()+(50*365*24*60*60)
    res=timestamp_to_strtime(fifty)
    print('50年后的时间是',res)

     2、取3年后的时间:

    three_after=str_to_timestamp()+(3*365*24*60*60)
    res1=timestamp_to_strtime(three_after)
    print('3年后的时间是',res)

    3、取3天前的时间:

    three_before=str_to_timestamp()-(3*24*3600)
    res=timestamp_to_strtime(three_before)
    print('3天前的时间是',res)
  • 相关阅读:
    DataGridView中DataGridViewComDaboBoxColumn控件点击一次即可显示下拉菜单
    Django2.X报错-------ModuleNotFoundError: No module named 'django.core.urlresolvers'
    C#控件——批量化隐藏或显示同类型控件
    Python——Django运行问题
    关于VS2010 在设计窗口时控件消失问题
    DataGridView操作小记(1)
    c#_生成图片式验证码
    日常杂记——C#验证码
    DataGridView添加的数据最后一步无法生效的问题。
    request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别
  • 原文地址:https://www.cnblogs.com/brf-test/p/11651131.html
Copyright © 2020-2023  润新知