zoukankan      html  css  js  c++  java
  • Python_datetime模块

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

    • date,表示日期的类
    • time,表示时间的类
    • datetime,表示日期和时间的类
    • timedelta,表示时间间隔,即两个时间点的间隔
    • tzinfo,与时区有关的信息

     ( 这些类的对象都是不可变的 )

    (类有类方法,类方法里有方法,方法继承了类方法)

    1、date类

    datetime.date(year,month,day

    常用的类方法与属性:

    date.max 对象所能表示的最大日期(9999-12-31)
    date.min 对象所能表示的最小日期(0001-01-01) 
    date.today() 返回一个表示当前本地时间的date对象                                                                            
    date.resolution date对象表示日期的最小单位(天)
    date.fromtimestamp(timestamp) 根据给定的时间戳,返回一个date对象
     

    实现:

    import datetime
    import time
    print(datetime.date.max)
    print(datetime.date.min)
    print(datetime.date.today())
    print(datetime.date.resolution)
    print(datetime.date.fromtimestamp(time.time()+3600000))      # 给定时间戳的 日期
    类方法
    9999-12-31
    0001-01-01
    2018-09-17
    1 day, 0:00:00
    2018-10-29
    result

    其中常用的方法与属性:

    d.year
    d.month
    d.day
    d.replace(year[,month[,day]]) 生成并返回一个新的日期对象,原日期对象不变                                                       
    d.timetuple() 返回日期对应的时间元组(time.struct_time)对象
    d.toordinal()
    返回日期是自0001-01-01开始的第多少天
    d.weekday() 返回日期是星期几,[0,6],0表示星期一,1表示星期二
    d.isoweekday() 返回日期是星期几,[1,7],1表示星期一,2表示星期二
    d.isocalendar() 返回格式为(year,weekday,isoweekday)的元组
    d.isoformat() 返回‘YYYY-MM-DD’格式的日期字符串
    d.strftime() 自定义格式化字符串(和time模块的strftime()方法相同)

    实现:

    print(datetime.date.year)              # <attribute 'year' of 'datetime.date' objects>
    print(datetime.date.today().year)     # 本地时时间的年
    print(datetime.date.fromtimestamp(time.time()+3600000).month)   # 给定时间戳的 月
    print(datetime.date.today().day)  #
    
    print(datetime.date.today().replace(year=2019))
    print(datetime.date.today().timetuple())
    print(datetime.date.today().toordinal())
    print(datetime.date.today().weekday())
    print(datetime.date.today().isoweekday())
    print(datetime.date.today().isocalendar())
    print(datetime.date.today().isoformat())
    print(datetime.date.today().strftime('%Y-%m-%d-%a-%I'))
    方法
    <attribute 'year' of 'datetime.date' objects>
    2018
    10
    17
    2019-09-17
    time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=260, tm_isdst=-1)
    736954
    0
    1
    (2018, 38, 1)
    2018-09-17
    2018-09-17-Mon-12
    result

    2、time类

    其中,time类和time模块各自独立

    datetime.time(hour[,minute[,decond[,microsecond[,tzinfo]]]])

    常用的类方法与属性:

    time.max 表示的最大时间
    time.min                  表示的最小时间
    time.resolution 时间的最小单位,这里是1微秒                                                                         


    常用的方法与属性:

    t.hour
    t.minute               
    t.second
    t.microsecond 微秒
    t.tzinfo 时区信息
    t.replace() 用参数指定替代(时,分,秒,微秒,时区)对象,生成并返回新的对象
    t.isoformat() 返回'HH:MM:SS'格式字符串
    t.strftime() 返回自定义格式化字符串


    3、datetime类

    相当于date和time结合起来

    datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])

     常用的类方法与属性:

    datetime.max 最大日期
    datetime.min 最小日期
    datetime.resolution datetime对象所表示日期的最小单位,1微秒
    datetime.today() 返回当前本地时间
    datetime.now([tz]) 返回当前本地时间,如果指定tz,则返回tz时区当地时间
    datetime.utcnow() 返回当前UTC时间
    datetime.fromtimestamp(timestamp[,tz]) 根据给定的时间戳返回datetime对象,如果指定tz,则返回tz时区datetime对象
    datetime.utcfromtimestamp(timestamp) 根据时间戳创建一个datetime对象
    datetime.combine(date,time) 把指定的date和time对象整合为datetime对象
    datetime.strftime(date_string,format) 将格式化字符串转换为datetime对象
    实现:
    import datetime
    import time
    print(datetime.datetime.resolution)
    print(datetime.datetime.today())
    print(datetime.datetime.now())
    print(datetime.datetime.utcnow())
    print(datetime.datetime.fromtimestamp(time.time()))
    print(datetime.datetime.utcfromtimestamp(time.time()))
    print(datetime.datetime.combine(datetime.date(2019, 3, 5), datetime.time(3, 2, 45)))
    print(datetime.datetime.strftime(datetime.date(2019,9,2),'%Y-%m-%d %X'))
    类方法
    0:00:00.000001
    2018-09-17 20:32:36.868500
    2018-09-17 20:32:36.868500
    2018-09-17 12:32:36.868500
    2018-09-17 20:32:36.868500
    2018-09-17 12:32:36.868500
    2019-03-05 03:02:45
    2019-09-02 00:00:00
    result

    其中常用的方法与属性:

    dt.year

    dt.month

    dt.day

    dt.hour

    dt.minute

    dt.second

    dt.microsecond 微妙
    dt.tzinfo 时区信息
    dt.date() 获取dt的date对象
    dt.time() 获取dt的time对象,tzinfo 为none
    dt.timetz() 获取dt的time对象,tzinfo 为与datetime的tzinfo相同
    dt.replace() 指定参数替代(年,月,日,时,分,秒,微妙,时区),生成并返回新对象
    dt.timetuple() 返回日期时间对应的时间元组(time.struct_time)(不包括tzinfo)
    dt.utctimetuple() 返回UTC时间对应的时间元组(不包括tzinfo)
    dt.timestamp() 返回dt对象对应的时间戳
    dt.toordinal() 返回日期是是自 0001-01-01 开始的第多少天(与date类相同)
    dt.weekday() 返回日期是星期几,[1, 7], 1表示星期一(与date类相同)
    dt.isocalendar() 返回格式如(year,month,day)的时间元组(与date类相同)
    dt.isoformat() 返回格式如'YYYY-MM-DD HH:MM:SS'的字符串
    dt.ctime() 等价与time模块的time.ctime(time.mktime(d.timetuple()))
    dt.strftime() 返回指定格式的时间字符串

    实现:

    import datetime,time
    print(datetime.datetime.today().tzinfo)
    print(datetime.datetime.today().date())
    print(datetime.datetime.today().time())
    print(datetime.datetime.today().timetz())
    print(datetime.datetime.today().timetuple())
    print(datetime.datetime.today().timestamp())
    print(datetime.datetime.today().ctime())
    方法
    None
    2018-09-17
    20:36:47.560500
    20:36:47.560500
    time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=20, tm_min=36, tm_sec=47, tm_wday=0, tm_yday=260, tm_isdst=-1)
    1537187807.5605
    Mon Sep 17 20:36:47 2018
    result

    4、timedelta类

    时间加减(代表了两个datetime之间的时间差)

    datetime.timedalta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0 ,hours=0,weeks=0)

    在日期上做天,小时,分钟,秒,毫秒,微秒,周 的时间计算

    • 1毫秒转换为1000微秒
    • 1分钟转换为60秒
    • 1小时转换为3600秒
    • 1周转换为7天

    其中,timedelta内部只存储 days,seconds,microseconds

    方法与属性:

    td.days 天(范围[-999999999,999999999])
    td.seconds 秒(范围[0,86399])                                                                                                   
    td.microseconds 微秒(范围[0,999999])
    td.total_seconds() 以秒为单位返回该时间差

    实现:

    m = datetime.datetime.now()
    print(m)
    l = m + datetime.timedelta(3)
    print(l)
    n = m + datetime.timedelta(hours=4)
    print(n)
    span = l-m
    print(span)
    print(span.total_seconds())
    方法
    2018-09-17 16:38:43.021000
    2018-09-20 16:38:43.021000
    2018-09-17 20:38:43.021000
    3 days, 0:00:00
    259200.0
    result

    5、tzinfo时区类

     其中,tzinfo是一个抽象类,所以不能直接被实例化

     时间转换需要用datetime和pytz来转换时区

     

  • 相关阅读:
    设计模式15:Interpreter 解释器模式(行为型模式)
    设计模式14:Command 命令模式(行为型模式)
    设计模式13:Template Method 模板方法模式(行为型模式)
    设计模式12: Proxy 代理模式(结构型模式)
    敏捷软件开发:原则、模式与实践——第20章 咖啡的启示
    敏捷软件开发:原则、模式与实践——第19章 类图
    敏捷软件开发:原则、模式与实践——第16章 对象图、第17章 用例、第18章 顺序图
    敏捷软件开发:原则、模式与实践——第15章 状态图
    敏捷软件开发:原则、模式与实践——第14章 使用UML
    敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述
  • 原文地址:https://www.cnblogs.com/Vera-y/p/9669985.html
Copyright © 2011-2022 走看看