美文网首页
python之时间模块(time模块和datetime模块)

python之时间模块(time模块和datetime模块)

作者: ATNOW | 来源:发表于2020-01-13 16:53 被阅读0次
    time模块

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

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

    b、struct_time时间元组,共有九个元素组。

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

    三者之间的转换为:

    时间格式转换
    timestamp

    time()函数返回的是时间戳(timestamp)。所谓时间戳指的是从1970年1月1日00:00:00开始按秒计算的偏移量。其他返回时间戳方式的函数还有clock()。

    >>>import time
    >>>time.time()
    1578904156.5768752
    

    ctime()函数可以将一个时间戳转化为字符串的形式,默认time.time()为参数。

    >>>import time
    >>>time.ctime()
    'Mon Jan 13 16:36:38 2020'
    >>>time.ctime(1500000000)
    'Fri Jul 14 10:40:00 2017'
    

    gmtime()用于获取UTC时间,UTC时间实际就是格林尼治时间,它与中国时间的时差为八个小时。

    >>>import time
    >>>time.gmtime()
    time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=8, tm_min=38, tm_sec=15, tm_wday=0, tm_yday=13, tm_isdst=0)
    

    localtime()函数用于获取当前时区的当前时间。

    >>>import time
    >>>time.localtime()
    time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=16, tm_min=38, tm_sec=45, tm_wday=0, tm_yday=13, tm_isdst=0)
    

    strftime()函数把一个代表时间的元组或者struct_time转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。

    >>> time.strftime("%Y-%m-%d %X")
    '2020-01-13 16:39:48'
    >>> time.strftime("%Y-%m-%d %H:%M:%S")
    '2020-01-13 16:40:22'
    >>> time.strftime("%Y-%m-%d %X", time.localtime())
    '2020-01-13 16:40:22'
    

    strptime()把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作

    >>>import time
    >>>time.strptime('2020-01-13 16:40:22','%Y-%m-%d %X')       
    time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=16, tm_min=40, tm_sec=22, tm_wday=0, tm_yday=13, tm_isdst=-1)
    

    mktime()函数可以将struct_time转换成用时间的浮点数表示

    >>> time.mktime(time.gmtime())
    '1578876099.0'
    >>> time.mktime(time.localtime())
    '1578904913.0'
    

    sleep()函数线程推迟指定的时间运行,单位为秒。

    import time
    >>> time.sleep(3) #表示延迟3秒后程序继续运行
    
    struct_time元组元素结构
    属性                            值
    tm_year(年)                  比如2011 
    tm_mon(月)                   1 - 12
    tm_mday(日)                  1 - 31
    tm_hour(时)                  0 - 23
    tm_min(分)                   0 - 59
    tm_sec(秒)                   0 - 61
    tm_wday(weekday)             0 - 6(0表示周日)
    tm_yday(一年中的第几天)        1 - 366
    tm_isdst(是否是夏令时)        默认为-1
    
    format time
    格式 含义
    %a 本地(locale)简化星期名称
    %A 本地完整星期名称
    %b 本地简化月份名称
    %B 本地完整月份名称
    %c 本地相应的日期和时间表示
    %d 一个月中的第几天(01 - 31)
    %H 一天中的第几个小时(24小时制,00 - 23)
    %I 第几个小时(12小时制,01 - 12)
    %j 一年中的第几天(001 - 366)
    %m 月份(01 - 12)
    %M 分钟数(00 - 59)
    %p 本地am或者pm的相应符
    %S 秒(01 - 61)
    %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。
    %w 一个星期中的第几天(0 - 6,0是星期天)
    %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
    %x 本地相应日期
    %X 本地相应时间
    %y 去掉世纪的年份(00 - 99)
    %Y 完整的年份
    %Z 时区的名字(如果不存在为空字符)
    %% ‘%’字符

    datetime模块

    datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。

    1. date类

      date.max、date.min:date对象所能表示的最大、最小日期;
      date.resolution:date对象表示日期的最小单位。这里是天。
      date.today():返回一个表示当前本地日期的date对象;
      date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
      
    2. time类

      time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
      time.resolution:时间的最小单位,这里是1微秒;
      
    3. datetime类

      datetime.today():返回一个表示当前本地时间的datetime对象;
      datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
      datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
      datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
      datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
      datetime.combine(date, time):根据date和time,创建一个datetime对象;
      datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
      
    4. timedalta类

      使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算。

      import datetime
      
      print('microseconds:', datetime.timedelta(microseconds=1)) #microseconds: 0:00:00.000001
      print('milliseconds:', datetime.timedelta(milliseconds=1)) #milliseconds: 0:00:00.001000
      print('seconds :', datetime.timedelta(seconds=1)) #seconds : 0:00:01
      print('minutes :', datetime.timedelta(minutes=1)) #minutes : 0:01:00
      print('hours :', datetime.timedelta(hours=1)) #hours : 1:00:00
      print('days :', datetime.timedelta(days=1)) #days : 1 day, 0:00:00
      print('weeks :', datetime.timedelta(weeks=1)) #weeks : 7 days, 0:00:00
      
    5. tzinfo时区类

      # 可以通过判断datetime对象的tzinfo属性,来获悉他是何种类型
      import datetime
      import pytz
      now=datetime.datetime.now()
      print(now) #2020-01-13 16:29:16.578841
      print(now.tzinfo) #None
      

    相关文章

      网友评论

          本文标题:python之时间模块(time模块和datetime模块)

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