一、datetime模块介绍
(一)、datetime模块中包含如下类:
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
datetime_CAPI | 日期时间对象C语言接口 |
timedelta | 时间间隔,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
(二)、datetime模块中包含的常量
常量 | 功能说明 | 用法 | 返回值 |
---|---|---|---|
MAXYEAR | 返回能表示的最大年份 | datetime.MAXYEAR | 9999 |
MINYEAR | 返回能表示的最小年份 | datetime.MINYEAR | 1 |
二、date类
(一)、date对象构成
1、date对象由year
年份、month
月份及day
日期三部分构成:
date(year,month,day)
2、 通过year
, month
, day
三个数据描述符可以进行访问:
1 >>> import datetime
2 >>> datetime.date.today()
3 datetime.date(2019, 8, 21)
4 >>> a = datetime.date.today()
5 >>> a
6 datetime.date(2019, 8, 21)
7 >>> a.year
8 2019
9 >>> a.month
10 8
11 >>> a.day
12 21
3、当然,你也可以用__getattribute__(...)
方法获得上述值:
1 >>> a.__getattribute__('year') 2 2019 3 >>> a.__getattribute__('month') 4 8 5 >>> a.__getattribute__('day') 6 21
(二)、date对象中包含的方法与属性
1、用于日期比较大小的方法
方法名 | 方法说明 | 用法 |
---|---|---|
__eq__(…) | 等于(x==y) | x.__eq__(y) |
__ge__(…) | 大于等于(x>=y) | x.__ge__(y) |
__gt__(…) | 大于(x>y) | x.__gt__(y) |
__le__(…) | 小于等于(x<=y) | x.__le__(y) |
__lt__(…) | 小于(x | x.__lt__(y) |
__ne__(…) | 不等于(x!=y) | x.__ne__(y) |
以上方法的返回值为True\False
示例如下:
d1 = datetime.date(2019, 8, 21) d2 = datetime.date(2019, 8, 20) print('d1.__eq__(d2)>>>{}\td1.__ge__(d2)>>>{}'.format(d1.__eq__(d2),d1.__ge__(d2))) 输出: d1.__eq__(d2)>>>False d1.__ge__(d2)>>>True
2、获得二个日期相差多少天
使用__sub__(...)
和__rsub__(...)
方法,其实二个方法差不太多,一个是正向操作,一个是反向操作:
方法名 | 方法说明 | 用法 |
---|---|---|
__sub__(…) | x - y | x.__sub__(y) |
__rsub__(…) | y - x | x.__rsub__(y) |
示例如下:
1 >>> a 2 datetime.date(2019, 8, 22) 3 >>> b 4 datetime.date(2019, 8, 15) 5 >>> a.__sub__(b) 6 datetime.timedelta(days=7) 7 >>> a.__rsub__(b) 8 datetime.timedelta(days=-7) 9 >>>
3、ISO标准化日期
如果想要让所使用的日期符合ISO标准,那么使用如下三个方法:
1).* isocalendar(...)
*:返回一个包含三个值的元组,三个值依次为:year
年份,week number
周数,weekday
星期数(周一为1…周日为7):
示例如下
a = datetime.date(2019, 8, 21) date_iso = a.isocalendar() print('date_iso-->', date_iso) print(date_iso[0], date_iso[1], date_iso[2]) 输出: date_iso--> (2019, 34, 3) 2019 34 3
2). isoformat(...)
: 返回符合ISO 8601标准 (YYYY-MM-DD
) 的日期字符串;
示例如下
1 >>> a=datetime.date(2019, 8, 22) 2 >>> a.isoformat() 3 '2019-08-22' 4 >>>
3). isoweekday(...)
: 返回符合ISO标准的指定日期所在的星期数(周一为1…周日为7)
示例如下:
1 a=datetime.date(2019,8,22) 2 >>> a.isoformat() 3 '2019-08-22' 4 >>> a.isoweekday() 5 4
4).与isoweekday(...)
相似的还有一个weekday(...)
方法,只不过是weekday(...)
方法返回的周一为 0, 周日为 6
示例如下:
1 >>> a.weekday() 2 3
4、其他方法与属性
1). timetuple(...)
:该方法为了兼容time.localtime(...)
返回一个类型为time.struct_time
的数组,但有关时间的部分元素值为0:
1 >>> a=datetime.date(2019, 8, 21) 2 >>> a.timetuple() 3 time.struct_time(tm_year=2019, tm_mon=8, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday