zoukankan      html  css  js  c++  java
  • Python中模块之time&datetime的功能介绍

                                          time&datetime的功能介绍

    1. time模块

    1. 时间的分类

    1. 时间戳:以秒为单位的整数
    2. 时间字符格式化:常见的年月日时分秒
    3. 时间元祖格式:9大元素,每个元素对应时间的年与日时分秒周天夏令时
    

    2. time中的变量

    1. timezone

      返回当前时区时间与UTC时区时间相差的时间戳,没有夏令时的情况下。

      方法:time.timezone
      返回值:int
      例如:print(time.timezone)
       >>> -28800
      #由于中国属于东八区,比UTC早8个小时,拿UTC-中国时区就等于-8,因此上述结果是负值。
      
    2. altzone

      返回当前时区时间与UTC时区时间相差的时间戳,在有夏令时的情况下。

      方法:time.altzone
      返回值:int
      例如:print(time.altzone)
       >>> -32400
      #因为有夏令时的情况下,时间提前一个小时,因此现在的8点,实际上是9点,因此上述的结果是相差9个小时。
      
    3. daylight

      判断当前时区是否实行夏令时,有实行则返回1,否则返回0

      方法:time.daylight
      返回值:int(0 or 1)
      例如:print(time.daylight)
       >>> 0
      #由于中国未实行夏令时,因此返回值为0.
      
    4. tzname

      把标准时区UTC和实行夏令时的时区作为元祖的两个元素返回

      方法:time.tzname
      返回值:tuple
      

    3. time中的方法

    1. time

      以浮点类型返回当前时间的时间戳

      方法:time.time()
      返回值:float
      例如:print(time.time())
       >>> 1506229765.1344674
      #拿当前的时间减去1970年1月1日0时0分0秒得到的秒数。
      
    2. clock

      以浮点类型返回CPU启动的时间戳

      方法:time.clock()
      返回值:float
      例如:print(time.clock())
       >>> 9.770343197960344e-07
      #由于CPU启动时间小于一秒,因此上述返回值为负的科学计数法。
      
    3. sleep

      沉睡指定秒数

      方法:time.sleep(num)
      返回值:None
      例如:print(time.sleep(1))
       >>> None
      #该方法为执行过程方法,因此没有返回结果,程序等待一秒结束。
      
    4. gmtime

      把时间戳转换为时间元祖格式,以UTC时区进行计算

      方法:time.gmtime(seconds)
      返回值:time.struct_time
      例如:print(time.gmtime(666666))
       >>> time.struct_time(tm_year=1970, tm_mon=1, tm_mday=8, tm_hour=17, tm_min=11, tm_sec=6, tm_wday=3, tm_yday=8, tm_isdst=0)
      #返回的结果是以1970年1月1日算起始点,加上上述的指定秒数得出的时间元祖格式。
      
    5. localtime

      把本地时间戳转换为时间元祖格式,以本地时区进行计算

      方法:time.localtime([seconds])
      返回值:time.struct_time
      例如:print(time.localtime(666666))
       >>> time.struct_time(tm_year=1970, tm_mon=1, tm_mday=9, tm_hour=1, tm_min=11, tm_sec=6, tm_wday=4, tm_yday=9, tm_isdst=0)
      #可以指定时间戳,默认本地当前时间。
      
    6. asctime

      把时间元祖格式转换为时间字符串格式

      方法:time.asctime([time.struct_time])
      返回值:str
      例如:print(time.asctime())
       >>> Sun Sep 24 13:36:00 2017
      #传入的参数一定需要是时间元祖格式,默认不指定时,为当前本地时间。
      
    7. ctime

      把时间戳格式转换为时间字符串格式

      方法:time.ctime([num])
      返回值:str
      例如:print(time.ctime(666666))
       >>> Fri Jan  9 01:11:06 1970
      #传入的参数需要是时间戳即float or int类型,默认不指定时,为当前本地时间。
      
    8. mktime

      把时间元祖格式转换为时间戳格式

      方法:time.mktime(tuple)
      返回值:float
      例如:time.mktime(time.localtime())
       >>> 1506232321.0
      #实际中一般很少书写时间元祖格式,该方法在传入时不能直接传入时间元祖格式,但可以传入元祖即时间元祖格式去掉关键字的元祖。
      
    9. strptime

      把时间字符串按照对应的格式化进行转换为时间元祖格式

      方法:time.strptime(str,format)
      返回值:time.struct_time
      例如:print(time.strptime('2017-9-24','%Y-%m-%d'))
       >>> time.struct_time(tm_year=2017, tm_mon=9, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=267, tm_isdst=-1)
      #该方法与strptime方法的作用相反。
      
    10. strftime

      把时间元祖格式按照相应的格式化转换为时间字符串格式

      方法:time.strftime(format,[tuple])
      返回值:str
      例如:print(time.strftime('%Y-%m-%d'))
       >>> 2017-09-24
      #需要指定时间元祖,如果不指定时,默认以当期本地时间进行计算。
      

    时间格式对应表如下:

    标识符    标识符代表的意思
     %Y      表示年份
     %m      表示月份,取值范围[01,12]
     %d      表示日,取值范围[01,31]
     %H      表示小时,取值范围[00,23]
     %M      表示分钟,取值范围[00,59]
     %S      表示秒,取值范围[00,61]
     %z      表示时区,取值范围[-12,+12]
     %a      用英文表示周几,简称,取值范围[Sun,Sat]
     %b      用英文表示月份,简称,取值范围[Jan,Dec]
     %A      用英文表示周几,全称,取值范围[Sunday,Saturday]
     %B      用英文表示月份,全称,取值范围[January,December]
     %c      直接表示时间格式等于%a %b %d %H:%M:%S %Y的总和
     %I      表示当前时间是12小时制还是24小时制,取值范围[01,02]
     %p      表示当前时间是上午还是下午,该表示方法只有24小时制才可以用。
    

    注:从上述对应表中可以看出,用于表示12小时制中的小时'h'并不存在,因此在python中一般只用于处理24小时制。

    2. datetime模块

    该模块中主要有以下几个类:

    1. date

      理想化的日期对象,有year,month,day三个属性

    2. time

      理想化的时间对象,不考虑闰秒即(秒取值范围为[00,59]),有hour,minute,second,microsecond,tzinfo五个属性

    3. datetime

      datetime.date和datetime.time的组合

    4. timedelta

      表示两个datetime.date,datetime.time或datetime.datetime直接的差

    5. tzinfo

      表示时区信息

    2. datetime.date

    1. fromtimestamp

      把时间戳转换为字符串格式的日期,去除时间等其他信息,只保留年月日

      方法:datetime.date.fromtimestamp(num)
      返回值:datetime.date
      例如:print(datetime.date.fromtimestamp(233333333))
       >>> 1977-05-24
      #只保留年月日      
      

    3. datetime.datetime

    1. astimezone

      转换为新时区的当时时间

    2. combine

      把日期和时间合并

      例如:print(datetime.datetime.combine(datetime.date(207,9,25),datetime.time(16,30)))
      >>> datetime.datetime(207, 9, 25, 16, 30)       
      
    3. now

      获取当天日期

      方法:datetime.datetime.now()
      返回值:datetime.datetime
      例如:print(datetime.datetime.now())
       >>> datetime.datetime(2017, 9, 24, 15, 23, 44, 389430)
      #获取当天的时间
      

      配合timedelta类一起使用:

      获取当天后第N天的时间

      方法:datetime.datetime.now() + datetime.timedelta(days=num)
      返回值:datetime.datetime
      例如:print(datetime.datetime.now() + datetime.timedelta(5))
       >>> 2017-09-29 15:49:01.371196
      #获取当天后第五天的时间,当然也可以获取当天前第N天的时间,传入的数字为负整数即可。对应参数days默认可以不填写。
      

      获取当天N个小时之前的时间

      方法:datetime.datetime.now() + datetime.timedelta(hours=num)
      返回值:datetime.datetime
      例如:print(datetime.datetime.now() + datetime.timedelta(hours=-5))
       >>> 2017-09-24 10:48:32.525547
      #获取5个小时之前当天的时间,以此类推,years,months,minutes,seconds,mircroseconds等的使用。
      

      当然修改上述日期的方法也可以不使用timedelta类,可以使用datetime.datetime.now().replace方法,具体如下:

      方法:datetime.datetime.now().replace(year,month...)
      返回值:datetime.datetime
      例如:print(datetime.datetime.now().replace(year=2018))
      >>> 2018-09-24 15:57:33.762503
      #需要注意的是,该方法使用的参数与timedelta类使用的参数是不一样的,一个加's',一个没有加's'。
      

    4. timedelta

    该类的对象:

    1. days(天数)
    2. microseconds(微秒数)
    3. seconds(秒数)
    4. hours(小时)
    5. minutes(分钟数)

    该类一般配合datetime类一起使用,因此详情请见上述类的介绍。

  • 相关阅读:
    GJGHFD的最小树 题解 [Trie树+启发式合并]
    GJGHFD的二进制数 题解 [主席树]
    《魔女之旅》——《回溯之叹》读后感
    [BZOJ3779]重组病毒 题解 [LCT+dfs序]
    [BZOJ4025]二分图 题解 [线段树分治+并查集]
    《魔女之旅》——《瓶中的幸福》读后感
    《魔女之旅》——《孤独绽放的彼岸花》读后感
    《魔女之旅》——《在融雪之前》读后感
    [BZOJ3514]Codechef MARCH14 GERALD07加强版 题解 [LCT+主席树]
    [BZOJ3700]发展城市 题解 [RMQ求LCA+分类讨论]
  • 原文地址:https://www.cnblogs.com/single-boy/p/7587457.html
Copyright © 2011-2022 走看看