zoukankan      html  css  js  c++  java
  • (十一)time模块

    三种时间表示

    在Python中,通常有这几种方式来表示时间:

    • 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
    • 元组(struct_time)   :运行time.localtime(),返回一个struct_time元组,共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
    • 格式化的时间字符串(Format string):就是我们比较熟悉的格式,比如2018-12-25 11:12:30

    主要掌握上面两张图,左图是时间三种表示方式的相互装换,右图是两种快捷方式

    print(time.time())                     //时间戳
    print(time.localtime())                //结构化时间(元组),默认参数为空的话,即当前时间
    print(time.localtime(1473525444))      //如果有参数值,将这个时间戳转换为当前时区的struct_time
    结果:1545890072.4237452
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=13, tm_min=54, tm_sec=32, tm_wday=3, tm_yday=361, tm_isdst=0)
    time.struct_time(tm_year=2016, tm_mon=9, tm_mday=11, tm_hour=0, tm_min=37, tm_sec=24, tm_wday=6, tm_yday=255, tm_isdst=0)

    timestamp转化为struct_time:两种方法

    print(time.localtime())                 //第一种localtime()上面已说明
    print(time.gmtime())                    //gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time
    结果:
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=14, tm_min=32, tm_sec=40, tm_wday=3, tm_yday=361, tm_isdst=0)
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=6, tm_min=32, tm_sec=40, tm_wday=3, tm_yday=361, tm_isdst=0)

    struct_time转化为timestamp:

    print(time.mktime(time.localtime()))    //localtime()是结构化时间,再用mktime()转,就是时间戳了
    print(time.time())                      //等价于上面的
    结果:1545892076.0
    1545892076.7587585

    struct_time转化为Format string(很常用):

    strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。
                  如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
    print(time.strftime("%Y-%m-%d %X", time.localtime()))    //"%Y-%m-%d %X"是自定义的格式,其中-可以随意变换
    结果:2018-12-27 14:39:53

    Format string转化为struct_time:

    time.strptime(string[, format]),把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
    结果:time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

    还有右图的两个方法,提供了比较便利的两种方式:

    asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。
    ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
    print(time.asctime(time.localtime()))    //也可以不写time.localtime()   直接print(time.asctime())
    print(time.ctime(time.time()))           //也可以不写time.time()    直接print(time.ctime()) 
    结果:Thu Dec 27 15:32:49 2018
    Thu Dec 27 15:32:49 2018

    在这两个函数中,格式默认为:"%a %b %d %H:%M:%S %Y"。

  • 相关阅读:
    uc浏览器开发版
    探索.NET中的事件机制
    “多态枚举”数值如何判断?
    关于“程序集与命名空间”
    AutoResetEvent和ManualResetEvent的异同
    C# 获取DOS命令的返回值
    自定义控件——自绘
    关于using……的一些探讨
    XmlDocument操作xml类
    使用Trigger实现Cascading的功能
  • 原文地址:https://www.cnblogs.com/xulan0922/p/10185312.html
Copyright © 2011-2022 走看看