爬虫(五十五)通用标准库 datetime(四十六)

与time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。

导入方式: import datetime

datetime模块定义了以下几个类(注意:这些类的对象都是不可变的!)。

爬虫(五十五)通用标准库 datetime(四十六)_第1张图片

使用datetime模块主要就是对其前四个类的操作。另外,datetime模块中还定义了两个常量:

datetime.MINYEAR:

datetime.date或datetime.datetime对象所允许的年份的最小值,该值为1。

datetime.MAXYEAR:

datetime.date或datetime.datetime对象所允许的年份的最大值,该值为9999。

一、datetime.date类

定义:class datetime.date(year, month, day)

datetime模块下的日期类,只能处理年月日这种日期时间,不能处理时分秒。

在构造datetime.date对象的时候需要传递下面的参数:

爬虫(五十五)通用标准库 datetime(四十六)_第2张图片

主要属性和方法:

爬虫(五十五)通用标准库 datetime(四十六)_第3张图片

爬虫(五十五)通用标准库 datetime(四十六)_第4张图片

使用范例:

>>> import time
>>> from datetime import date
>>>
>>> date.max
>>> date.min
>>> date.resolution
>>> date.today()
>>> date.fromtimestamp(time.time())
>>> d = date.today()
>>> d.year
>>> d.month
>>> d.day
>>> d.replace(2018)
>>> d.replace(2018, 5)
>>> d.replace(2018, 5, 2)
>>> d.timetuple()
>>> d.toordinal()
>>> d.weekday()
>>> d.isoweekday()
>>> d.isocalendar()
>> d.isoformat()
>>> d.ctime()
>>> d.strftime('%Y/%m/%d')

二、 datetime.time类

定义:class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])

datetime模块下的时间类,只能处理时分秒。

在构造datetime.time对象的时候需要传递下面的参数:

爬虫(五十五)通用标准库 datetime(四十六)_第5张图片

主要属性和方法:

爬虫(五十五)通用标准库 datetime(四十六)_第6张图片

使用范例:

>>> from datetime import time
>>>
>>> time.max
datetime.time(23, 59, 59, 999999)
>>> time.min
datetime.time(0, 0)
>>> time.resolution
datetime.timedelta(0, 0, 1)
>>>
>>> t = time(12, 15, 40, 6666)
>>> t.hour
20
>>> t.minute
5
>>> t.second
40
>>> t.microsecond
8888
>>> t.replace(21)
>>> t.isoformat()
>>> t.strftime('%H%M%S')
>>> t.strftime('%H%M%S.%f')

三、 datetime.datetime类

定义:class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

一定要注意这是datetime模块下的datetime类,千万不要搞混了!

datetime模块下的日期时间类,你可以理解为datetime.time和datetime.date的组合类。

在构造datetime.datetime对象的时候需要传递下面的参数:

爬虫(五十五)通用标准库 datetime(四十六)_第7张图片

主要属性和方法:

爬虫(五十五)通用标准库 datetime(四十六)_第8张图片

爬虫(五十五)通用标准库 datetime(四十六)_第9张图片

使用范例:

>>> from datetime import datetime, timezone
>>> datetime.today()
>>> datetime.now()
>>> datetime.now(timezone.utc)
>>> datetime.utcnow()
>>> import time
>>> datetime.fromtimestamp(time.time())
>>> datetime.utcfromtimestamp(time.time())
>>> datetime.combine(date(2017, 5, 4), t)
>>> datetime.strptime('2017/05/04 10:23', '%Y/%m/%d %H:%M')
>>> dt = datetime.now()
>>> dt
>>> dt.year
>>> dt.month
>>> dt.day
>>> dt.hour
>>> dt.minute
>>> dt.second
>>> dt.timestamp()
>>> dt.date()
>>> dt.time()
>>> dt.timetz()
>>> dt.replace(2018)
>>> dt.timetuple()
>>> dt.utctimetuple()
>>> dt.toordinal()
>>> dt.weekday()
>>> dt.isocalendar()
>>> dt.isoformat()
>>> dt.isoformat(sep='/')
>>> dt.isoformat(sep=' ')
>>> dt.ctime()
>>> dt.strftime('%Y%m%d %H:%M:%S.%f')

四、 datetime.timedelta类

定义:class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

timedelta对象表示两个不同时间之间的差值。可以对datetime.datedatetime.timedatetime.datetime对象做算术运算。

主要属性和方法:

爬虫(五十五)通用标准库 datetime(四十六)_第10张图片

使用范例:

>>> import datetime
>>>
>>> datetime.timedelta(365).total_seconds()     # 一年包含的总秒数
31536000.0
>>> dt = datetime.datetime.now()
>>> dt + datetime.timedelta(3)              # 3天后
datetime.datetime(2017, 5, 29, 11, 17, 18, 339791) 
>>> dt + datetime.timedelta(-3)             # 3天前
datetime.datetime(2017, 5, 23, 11, 17, 18, 339791) 
>>> dt + datetime.timedelta(hours=3)        # 3小时后
datetime.datetime(2017, 5, 26, 14, 17, 18, 339791) 
>>> dt + datetime.timedelta(hours=-3)       # 3小时前
datetime.datetime(2017, 5, 26, 8, 17, 18, 339791) 
>>> dt + datetime.timedelta(hours=3, seconds=30)   # 3小时30秒后
datetime.datetime(2017, 5, 26, 14, 17, 48, 339791)
>>> dt2 = dt + datetime.timedelta(hours=10)
>>> dt2 -dt
datetime.timedelta(0, 36000)
>>> td = dt2 - dt
>>> td.seconds
36000

请继续关注我

记得点赞加关注哦,记得加鸡腿啊

你可能感兴趣的:(爬虫(五十五)通用标准库 datetime(四十六))