zoukankan      html  css  js  c++  java
  • time&datetime模块详解

     一.time模块

    1.时间格式转换图:

    2.time模块中时间表现的格式主要有三种:

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

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

      c、struct_time时间元组,共有九个元素组,struct_time的函数主要有gmtime(),localtime(),strptime()

    >>> import time
    >>> time.localtime()
    time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=18, tm_min=14, tm_sec=51, tm_wday=1, tm_yday=269, tm_isdst=0)

    下面是时间元组九个元素的解释:

    1 tm_year :年
    2 tm_mon :月(1-123 tm_mday :日(1-314 tm_hour :时(0-235 tm_min :分(0-596 tm_sec :秒(0-597 tm_wday :星期几(0-6,0表示周日)
    8 tm_yday :一年中的第几天(1-3669 tm_isdst :是否是夏令时(默认为-1)

    3.time模块中常用的函数

       (1)time.time()返回当前时间的时间戳

    >>> time.time()
    1506421280.1430917

     (2)time.localtime([secs])   -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)
    将一个时间戳转换为当前时区的struct_time,即时间数组格式的时间。
    参数:

    sec – 转换为time.struct_time类型的对象的秒数

    如果secs参数未提供,则以当前时间为准(即会默认调用time.time())

    #未给参数
    >>> time.localtime()
    time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=18, tm_min=56, tm_sec=40, tm_wday=1, tm_yday=269, tm_isdst=0)
    #给参数
    >>> time.localtime(144023740)
    time.struct_time(tm_year=1974, tm_mon=7, tm_mday=26, tm_hour=6, tm_min=35, tm_sec=40, tm_wday=4, tm_yday=207, tm_isdst=0)

    (3)time.mktime(t):将一个struct_time转化为时间戳
    time.mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数表示时间的浮点数。
    如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。
    参数:

    t – 结构化的时间或者完整的9位元组元素

    >>> time.mktime(time.localtime())
    1506476811.0

    (4)time.sleep(secs):线程推迟指定的时间运行

      前程推迟时间,单位为秒

    睡眠10秒

    >>> time.sleep(10)
    >>> 

    (5)time.strftime( format [, t] ) ->string
    返回字符串表示的当地时间。
    把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串,格式由参数format决定。如果未指定,将传入time.localtime()。如果元组中任何一个元素越界,就会抛出ValueError的异常。函数返回的是一个可读表示的本地时间的字符串。
    参数:

    • format:格式化字符串
    • t :可选的参数是一个struct_time对象

    时间字符串支持的格式符号:(区分大小写)

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

    实例:通过函数将struct_time转成格式字符串

    >>> a = time.localtime()
    >>> a
    time.struct_time(tm_year=2017, tm_mon=9, tm_mday=27, tm_hour=9, tm_min=53, tm_sec=46, tm_wday=2, tm_yday=270, tm_isdst=0)
    >>> time.strftime('%Y%m%d',a) '20170927' >>> time.strftime('%Y-%m-%d',a) '2017-09-27'

    也可以使用字符串拼接成格式化字符串:

    >>> a
    time.struct_time(tm_year=2017, tm_mon=9, tm_mday=27, tm_hour=9, tm_min=53, tm_sec=46, tm_wday=2, tm_yday=270, tm_isdst=0)
    >>> print(str(a.tm_year)+""+str(a.tm_mon)+""+str(a.tm_mday)+"")
    2017年9月27日

    获取当前时间的年月日或时分秒:

    >>> print(time.strftime('%H:%M:%S'))
    10:06:54
    >>> print(time.strftime('%Y-%m-%d'))
    2017-09-27

    (6)time.strptime(string,format)  -> struct_time

    将格式字符串转化成struct_time.
    该函数是time.strftime()函数的逆操作。time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。所以函数返回的是struct_time对象。
    参数:

    • string :时间字符串
    • format:格式化字符串

    创建一个时间字符串变量stime

    >>> stime = "2017-08-24 23:01:30"
    >>> print(time.strptime(stime,"%Y-%m-%d %H:%M:%S"))
    time.struct_time(tm_year=2017, tm_mon=8, tm_mday=24, tm_hour=23, tm_min=1, tm_sec=30, tm_wday=3, tm_yday=236, tm_isdst=-1)

    (7)time.asctime( [tuple] )  -> string
    把一个表示时间的元组或者struct_time表示为 ‘Sun Aug 23 14:31:59 2015’ 这种形式。如果没有给参数,会将time.localtime()作为参数传入。
    参数:

    t – 9个元素的元组或者通过函数 gmtime() 或 localtime() 返回的时间值

    >>> time.asctime()
    'Wed Sep 27 11:52:23 2017'

    (8)gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)

    将一个时间戳转换为UTC时区的struct_time
    time.gmtime() 函数将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1 00:00:00以来的秒数。其默认值为time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象)。
    如果seconds参数未提供,则以当前时间为准。
    参数: seconds – 转换为time.struct_time类型的对象的秒数

    >>> time.gmtime()
    time.struct_time(tm_year=2017, tm_mon=9, tm_mday=27, tm_hour=4, tm_min=5, tm_sec=39, tm_wday=2, tm_yday=270, tm_isdst=0)
    >>> time.gmtime(1225678789)
    time.struct_time(tm_year=2008, tm_mon=11, tm_mday=3, tm_hour=2, tm_min=19, tm_sec=49, tm_wday=0, tm_yday=308, tm_isdst=0)
    >>> 

    (9)time.ctime([secs])
    把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果为指定参数,将会默认使用time.time()作为参数。它的作用相当于time.asctime(time.localtime(secs))
    参数:sec – 要转换为字符串时间的秒数

    >>> time.ctime()
    'Wed Sep 27 12:08:00 2017'
    >>> time.ctime(1600000000)
    'Sun Sep 13 20:26:40 2020'

    二.datetime模块

    datetime模块重新封装了time模块,相当于date和time的结合。
    import datetime
    print(datetime.datetime.now()) #获取当前时间
    print(datetime.datetime.now() + datetime.timedelta(3)) #获取三天后的时间
    print(datetime.datetime.now() + datetime.timedelta(hours=-3)) #获取下个小时以前的时间
    print(datetime.datetime.now() + datetime.timedelta(minutes=30,hours=3)) #获取三个半小时后的时间
     
  • 相关阅读:
    PowerToys插件扩展(类似Alfred)
    .net打独立运行环境遇到无法trim遇到的bug
    blazor wasm开发chrome插件
    将php代码部署到新浪云测试(简单方法,包含数据库的连接)
    python修改csv某一列的内容
    windows10调用libcurl
    Java动态脚本Groovy,高级啊!
    Linux 配置Git
    Java动态脚本Groovy读取配置文件
    Java动态脚本Groovy获取Bean(奇淫技巧操作)
  • 原文地址:https://www.cnblogs.com/wenwei-blog/p/7598351.html
Copyright © 2011-2022 走看看