美文网首页
python time

python time

作者: tafanfly | 来源:发表于2019-01-02 14:11 被阅读0次

    time

    无论在什么编程语言中,我们几乎都要用到时间。
    在Python中,与时间处理相关的内置模块包含如下:

    但此次本章主要讲解time模块,注意基于python2.7+版本。


    一. 时间表示

    1. 在Python中,我认为主要有四种方式来表示时间,分别是时间戳24字节时间字符串时间结构化时间注意支持的时间范围是1970年之后及2038年之前
    • 时间戳(timestamp):最适于做时间运算,通常格式为浮点型1545988001.381185, 可以通过time.time()获得。

    • 24字节时间:结构为星期、月、日、时间的特定格式字符串,例如'Wed Jan 2 10:15:00 2019',可以通过time.ctime()获得。

    • 字符串时间(string_time):在保存log的文档里面常常用到,一般作为每条打印的前缀,例如2018-12-28 08:00:00,可以通过time.strftime('%Y-%m-%d %H:%M:%S')获得。

    • 结构化时间(struct_time):一个包含了年月日时分秒的九元元组,例如time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0),可以通过time.localtime()获得。


    二. 时间戳(timestamp)

    主要通过time.time()方法获取。

    import time
    start = time.time()
    end = time.time()
    
    print end-start
    6.61431217194
    
    print start, end
    1546393672.63 1546393679.24
    

    结果为浮点型,可以加减运算。


    三. 24字节时间

    主要通过time.ctime()方法获取。

    import time
    print time.ctime()
    
    Wed Jan  2 10:15:00 2019
    

    四. 字符串时间(string_time)

    主要通过time.strftime('%Y-%m-%d %H:%M:%S')方法获取。

    import time
    print time.strftime('%Y-%m-%d %H:%M:%S')
    
    2018-12-28 17:20:32
    

    其中的空格、短横线和冒号都是美观修饰符号,真正起控制作用的是百分符。含义如下,但注意大小写的区别:

    格式 含义
    %a 本地星期名称的简写(如星期四为Thu)
    %A 本地星期名称的全称(如星期四为Thursday)
    %b 本地月份名称的简写(如八月份为agu)
    %B 本地月份名称的全称(如八月份为august)
    %c 本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06)
    %d 一个月中的第几天(01 - 31)
    %f 微秒(范围0.999999)
    %H 一天中的第几个小时(24小时制,00 - 23)
    %I 第几个小时(12小时制,0 - 11)
    %j 一年中的第几天(001 - 366)
    %m 月份(01 - 12)
    %M 分钟数(00 - 59)
    %p 本地am或者pm的标识符
    %S 秒(00 - 61)
    %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之 前的所有天数都放在第0周。
    %w 一个星期中的第几天(0 - 6,0是星期天)
    %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
    %x 本地相应日期字符串(如15/08/01)
    %X 本地相应时间字符串(如08:08:10)
    %y 去掉世纪的年份(00 - 99)两个数字表示的年份
    %Y 完整的年份(4个数字表示年份)
    %z 与UTC时间的间隔(如果是本地时间,返回空字符串)
    %Z 时区的名字(如果是本地时间,返回空字符串)
    %% ‘%’字符

    五. 结构化时间(struct_time)

    主要通过time.localtime()方法获取。

    import time
    print time.localtime()
    
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0)
    

    结构化时间元组共有9个元素,按顺序排列如下表:

    序号 字段 取值范围
    0 tm_year(4位数年) 2018
    1 tm_mon(月) 1 - 12
    2 tm_mday(日) 1 - 31
    3 tm_hour(分钟) 0 - 23
    4 tm_min(分) 0 - 59
    5 tm_sec(秒) 0 - 61(60或61是闰秒)
    6 tm_wday(一周的第几日) 0 - 6(0表示周一)
    7 tm_yday(一年的第几日) 1 - 366
    8 tm_isdst(夏令时) -1, 0, 1, -1是决定是否为夏令时的旗帜

    六. time模块常用方法

    1. time.asctime([t])
      将一个结构化时间(struct_time)转换为24字节时间,t默认为time.localtime()。
    import time
    
    print time.asctime()
    Wed Jan  2 10:36:42 2019
    
    1. time.ctime([s])
      将一个时间戳转换为本地时间的24字节时间,s默认为time.time()。
    import time
    t = time.time()
    
    print time.ctime()
    Wed Jan  2 10:33:58 2019
    
    print time.ctime(t-3600)
    Wed Jan  2 09:33:43 2019
    
    1. time.gmtime([s])
      将一个时间戳转换为UTC时区的结构化时间(struct_time),s默认为time.time()。
    import time
    print time.gmtime()
    
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=2, tm_hour=2, tm_min=9, tm_sec=9, tm_wday=2, tm_yday=2, tm_isdst=0)
    
    1. time.localtime([s])
      将一个时间戳转换为当前时区的结构化时间(struct_time),s默认为time.time()。
    import time
    print time.localtime()
    
    time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=16, tm_min=44, tm_sec=58, tm_wday=4, tm_yday=362, tm_isdst=0)
    
    1. time.mktime(t)
      将一个结构化时间(struct_time)转化为时间戳。
    import time
    
    print time.mktime(time.localtime())
    1546406111.0
    
    1. time.strftime(format[, t])
      将一个结构化时间(struct_time)转化为字符串时间(string_time), t默认为time.localtime()
    import time
    print time.strftime('%Y-%m-%d %H:%M:%S')
    
    '2018-12-28 17:20:32'
    
    1. time.strptime(string[, format])
      将一个字符串时间(string_time)转化为结构化时间(struct_time)。注意string和format的格式一致。
    import time
    string = '2019-01-01 12:00:00'
    print time.strptime(string,"%Y-%m-%d %H:%M:%S")
    
    time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)
    
    1. time.time()
      获得当前系统的时间戳。
    2. time.sleep(s)
      程序沉睡指定的时间, s单位为秒, 可赋值整形,亦可浮点型。
    3. time.clock()
      返回执行当前程序的CPU时间。在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间,而第二次之后的调用是自第一次调用以后到现在的运行时间。

    七. 时间格式之间的转换

    根据以上方法,可以总结出以下的转换关系图。


    相关文章

      网友评论

          本文标题:python time

          本文链接:https://www.haomeiwen.com/subject/ghickqtx.html