zoukankan      html  css  js  c++  java
  • python学习笔记 day19 常用模块(二)

    time模块

    表示时间有三种表示方式:

      时间戳-----time.time();

     格式化的字符串形式 ------time.strftime();

     结构化的元组----time.localtime()

    time.time(): 时间戳,主要是给计算机看的,从1970年算起到现在过了多少秒;

    import time
    print(time.time())

    运行结果:

    time.strftime()  :格式化的字符串,主要是给人看的

    import time
    print(time.strftime('%Y-%m-%d %H:%M:%S'))    # 按照 %Y-%m-%d %H:%M:%S 这种年月日,时分秒的格式来输出

    运行结果:

     time.localtime(): 结构化的元组,返回的结果有点类似于命名元组(namedtuple)可以通过属性取对应的值

    import time
    struct_time=time.localtime()
    print(struct_time)
    print(struct_time.tm_year)
    print(struct_time.tm_mon)

    运行结果:

     time.time()【时间戳】 time.localtime()【结构化元组】 time.strftime()【格式化字符串】之间的转换:

     1. time.time()-----> time.localtime()

    #时间戳 ---->结构化元组 localtime() 或者gmtime()
    import time
    t=time.time()   # 时间戳
    print(t)  # 1536848749.2373986
    print(time.localtime(t))  # 使用time.localtime()转换为结构化元组struct_time
    print(time.gmtime(1600000000))

    运行结果:

    2. time.localtime()--->time.time()  

    #结构化元组--->时间戳 使用mktime()
    import time
    print(time.localtime())   # 不传参数就是当前的struct_time
    print(time.mktime(time.localtime()))  # 由当前的struct_time 转化为当前的时间戳
    print(time.localtime(1600000000))   #这个时间戳对应的时间其实是2020-9-13
    print(time.mktime(time.localtime(1600000000)))  

    运行结果:

     3. time.localtime()---->time.strftime()  

    # 结构化元组----> 格式字符串
    import time
    struct_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1600000000))   # 时间戳是1600000000先转化为time.localtime() 然后使用strftime()转为格式化字符串
    print(struct_time)  # 时间戳为1600000000对应的格式化字符串时间(格式按照strftime 第一个参数指定的格式转化,第二个参数就是localtime()的时间)

    运行结果:

    4. strftime()---->localtime()

    # 格式化字符串-----> 结构化元组
    import time
    struct_time=time.strptime('1996-04-12','%Y-%m-%d')  # 讲1996-04-12 这个格式化字符串 使用strptime()转为localtime()结构化元组(告诉计算机 1996-04-12 分别对应%Y-%m-%d)
    print(struct_time)

    运行结果:

     5. time. localtime() ----->%a%b%d%H%M%S%Y串  使用csatime()

    import time
    print(time.asctime(time.localtime(1600000000)))  # 时间戳是1600000000对应的localtime(struct_time) 转化为 相应的串
    print(time.asctime(time.localtime()))   # 当前的localtime 结构化时间struct_time

    运行结果:

    6. time.time()---------%a%b%d%H%M%S%Y串 使用 ctime()

    import time
    print(time.ctime(time.time()))  # time.time()表示当前的时间戳 对应转为相应格式的串
    print(time.ctime(1600000000))   # 1600000000 这个制定的时间戳表示2020-9-13 

    运行结果:

    7. 如果有两个时间 计算中间差了多少时间(年月日时分秒格式给出)

    import time
    struct_time1=time.strptime('2018-09-14 09:39:00','%Y-%m-%d %H:%M:%S')   # 把格式化的时间2018-09-14 09:39:00 使用strptime()先转化为localtime()的结构化时间
    struct_time2=time.strptime('2019-08-12 16:23:12','%Y-%m-%d %H:%M:%S')
    time1=time.mktime(struct_time1)  # 把结构化元组 struct_time 使用mktime()转为时间戳 这样才可以进行加减
    time2=time.mktime(struct_time2)
    time_3=time2-time1  # time 仍然是时间戳,需要转为格式化的字符串形式---> 首先时间戳转为结构化元组,再由结构化元组转为格式化的字符串
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time_3)))
    print(time_3)

    运行结果:

    这显然不是我想要的结果,把两者的格式化时间先转为结构化元组,然后转为时间戳,相减,可是我再把两者差的时间戳转换回去时,转换的格式化时间都是1970开始的,,,sad.jpg

    直到我看了Eva-J的写法,我简直蠢如猪,计算两者时间戳的差之后,先转为结构化元组,然后我一直试图改变属性.tm_year的值,发现改变不了,所以你就不能字符串格式化输出的时候减一下的嘛,我简直是个魔鬼

    版本二(Eva-J)

    import time
    struct_time1=time.strptime('2018-09-14 09:39:00','%Y-%m-%d %H:%M:%S')   # 把格式化的时间2018-09-14 09:39:00 使用strptime()先转化为localtime()的结构化时间
    struct_time2=time.strptime('2019-08-12 16:23:12','%Y-%m-%d %H:%M:%S')
    time1=time.mktime(struct_time1)  # 把结构化元组 struct_time 使用mktime()转为时间戳 这样才可以进行加减
    time2=time.mktime(struct_time2)
    time_3=time2-time1  # time 仍然是时间戳,需要转为格式化的字符串形式---> 首先时间戳转为结构化元组,再由结构化元组转为格式化的字符串
    # print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time_3)))
    print(time_3)

    运行结果:

    talk is cheap,show me the code
  • 相关阅读:
    ubuntu下ssh服务相关操作
    搜索引擎的基础-倒排索引
    mysql重置密码
    mysql 服务器配置
    Activiti如何替换已部署流程图
    循环select查询结果集
    存储过程范例,有输入输出参数,带回滚
    sql server中字符串无法替换空格的问题
    Myeclipse实用快捷键总结
    Linux中添加用户与删除用户
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9643726.html
Copyright © 2011-2022 走看看