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

    datetime模块

    datetime模块提供了一些处理日期和时间的标准库。常用的有

    • datetime
    • timedelta
    • timezone

    构造一个datetime对象

    1. datetime()

      datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0);

      比如:d = datetime.datetime(2012, 12, 22, 19, 29, 29, 99999)

    2. datetime.today()

      返回一个本地时间的datetime对象,tzinfo为None。

    3. datetime.now(tz=None)

      返回一个datetime对象,若tz=None,等于datetime.today().若指定tz,则返回带tzinfo的datetime对象.

    4. datetime.utcnow()

      返回一个tz为None,时间为格林威治时间的datetime对象。

    5. datetime.fromtimestamp(timestamp,tz=None)

      从timestamp中返回一个datetime对象;默认时区为None

    6. datetime.strptinm(date_string,format)

      从date_string中返回一个datetime对象

      Return a datetime corresponding to date_string, parsed according to format.

    对于tzinfo为None的datetime对象,在进行时间转换时,会以计算机系统设置的时区作为参考时区。

    1. datetime() 创建一个datetime对象
    >>> import datetime
    >>> d = datetime.datetime(2012,12,22,23,59,59,9999)
    >>> d
    datetime.datetime(2012, 12, 22, 23, 59, 59, 9999)
    1. datetime.today()创建一个datetime对象
    >>> import datetime
    >>> d = datetime.datetime.today()
    >>> d
    datetime.datetime(2018, 8, 17, 12, 5, 16, 535649)
    1. datetime.now()创建一个datetime对象
    >>> import datetime
    >>> d = datetime.datetime.now()
    >>> d
    datetime.datetime(2018, 8, 17, 12, 6, 0, 501210)
    #创建一个带有tz的对象
    >>> tzx = datetime.timezone(datetime.timedelta(hours=1))
    >>> d = datetime.datetime.now(tz=tzx)
    >>> d
    datetime.datetime(2018, 8, 17, 5, 7, 46, 49701, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    1. datetime.utcnow()创建一个格林威治时间时区为None的datetime对象
    >>> import datetime
    >>> d = datetime.datetime.utcnow()
    >>> d
    datetime.datetime(2018, 8, 17, 4, 10, 28, 276769)
    #创建一个带格林威治时间的datetime对象
    >>> tzx = datetime.timezone(datetime.timedelta(hours=0))
    >>> d=datetime.datetime.now(tz=tzx)
    >>> d
    datetime.datetime(2018, 8, 17, 4, 10, 41, 417900, tzinfo=datetime.timezone.utc)
    
    1. datetime.fromtimestamp()创建一个datetime对象
    >>> import datetime
    >>> ts=1
    >>> d = datetime.datetime.fromtimestamp(ts)
    >>> d
    datetime.datetime(1970, 1, 1, 8, 0, 1)
    >>> tzx = datetime.timezone(datetime.timedelta(hours=1))
    >>> d = datetime.datetime.fromtimestamp(ts,tz=tzx)
    >>> d
    datetime.datetime(1970, 1, 1, 1, 0, 1, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    
    1. datetime.strptinme()创建一个datetime对象
    >>> import datetime
    >>> ds = '2018/8/17 14:00:00'
    >>> d = datetime.datetime.strptime(ds,'%Y/%m/%d %H:%M:%S')
    >>> d
    datetime.datetime(2018, 8, 17, 14, 0)
    >>> d = datetime.datetime.strptime(ds,'%Y/%m/%d %H:%M:%s')
    

    datetime对象属性和方法(attribute and mothod)

    1. 对象的属性year, month, day, hour, minute,second, microsecond, tzinfo;返回对象的相关属性
    2. weekday()返回星期的天(周一0,周日6)
    3. isoweekday() 返回星期的天(周一1,周日7)
    4. date() 返回一个timedate.data对象
    5. time()返回一个timedate.time对象
    6. isocalendar() 返回一个三元组(年,周,周的天)
    7. timestamp()返回时间戳
    8. replace() 返回一个新的datetime对象,原对象不变
    9. strftime() 返回一个指定fromat的时间字符串对象
    10. ctime() 返回时间的字符串对象

    几个示例:

    >>> import datetime
    >>> tzx = datetime.timezone(datetime.timedelta(hours=1))
    >>> d = datetime.datetime.now(tz=tzx)
    >>> d
    datetime.datetime(2018, 8, 17, 7, 6, 6, 658467, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    >>> d.day
    17
    >>> d.tzinfo
    datetime.timezone(datetime.timedelta(0, 3600))
    >>> d.time()
    datetime.time(7, 6, 6, 658467)
    >>> d.timestamp()
    1534485966.658467
    >>> d.ctime()
    'Fri Aug 17 07:06:06 2018'
    >>> d.strftime('%Y-%m-%d %H:%M:%S')
    '2018-08-17 07:06:06'
    >>> d.replace(hour=13)
    datetime.datetime(2018, 8, 17, 13, 6, 6, 658467, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    

    格式转换

    对前面的方法进行整理

    1. timestamp到datetime的相互转换

      datetime.datetime.fromtimestamp()

      d.timestamp()

    2. date_string到datetime的相互转换

      datetime.strptime(date_time,format)

      d.strftime(format)

    3. 使用字符串format获取datetime的字符串形式

    >>> d = datetime.datetime.fromtimestamp(1)
    >>> d
    datetime.datetime(1970, 1, 1, 8, 0, 1)
    >>> d.timestamp()
    1.0
    
    
    >>> d = datetime.datetime.strptime('2018/1/1 12:00:00', '%Y/%m/%d %H:%M:%S')
    >>> d.strftime('%x %X')
    '01/01/18 12:00:00'
    
    >>> d = datetime.datetime.strptime('2018/1/1 12:00:00', '%Y/%m/%d %H:%M:%S')
    >>> '{0:%H}:{0:%M}:{0:%S}'.format(d)
    '12:00:00'
    

    time的常用格式

    格式说明
    %Y 年份(2018)
    %y 年份(18)
    %m
    %d
    %H 小时
    %M 分钟
    %S
    %X 时:分:秒

    datetime的加减

    datetime的加减,需要另外一个类:timedelta

    timedelta对象的获取

    1. 两个datetime相减,得到timelta对象
    2. 使用timelte函数定义一个timedelta对象
    >>> import datetime
    >>> d1 = datetime.datetime.now()
    >>> d2 = datetime.datetime.now()
    >>> dd = d2 - d1
    >>> dd
    datetime.timedelta(0, 30, 702676)
    >>> dd = datetime.timedelta(hours=2)
    >>> dd
    datetime.timedelta(0, 7200)
    >>>
    

    timedelta的作用

    1. 时间的加减
    2. 时间差的获取
    3. 时区

    1. 时间的加减

      datetime2 = datetime1 + timedelta

      datetime1 = datetime2 - timedelta

      timedelta = datetime2 - datetime1

    2. 时间差的获取

      timedelta.seconds() 获取秒数

      timedelta.totalseconds() 获取时间差,精确到微妙

    3. 创建时区

      datetime.timezone(datetime.timedelta(hours=8))

  • 相关阅读:
    vue 兼容IE报错解决方案
    JDK1.8 ArrayList 源码解析
    Mac nasm 汇编入门
    命令模式
    模板方法
    Mysql Limit 调优
    观察者模式
    外观模式
    Rest- Client
    MongoDB数据库 5分钟快速上手
  • 原文地址:https://www.cnblogs.com/cmd61/p/11296805.html
Copyright © 2011-2022 走看看