之前有讲time模块可以查看之前的笔记https://sulao.cn/post/118.html,datetime模块也有和time模块相同的功能,也有一些自己特有的功能属性,我们来看看吧
datetime模块中包含如下类
date日期对象,常用的属性有year, month, day time时间对象 datetime日期时间对象,常用的属性有hour, minute, second, microsecond datetime_CAPI日期时间对象C语言接口 timedelta时间间隔,即两个时间点之间的长度 tzinfo时区信息对象
datetime模块中包含的常量
MAXYEAR返回能表示的最大年份datetime.MAXYEAR9999 MINYEAR返回能表示的最小年份datetime.MINYEAR1
我们首先来看看date函数
print(datetime.date(2016, 1, 5))
date函数需要传递三个参数进去,分别是年year,月month,和日day
上面打印的结果是
2016-01-05
我们可以通过年year,月month,和日day来获取相关的数据
#打印今日日期 print(datetime.date.today()) print(datetime.date.today().year) print(datetime.date.today().month) print(datetime.date.today().day)
打印结果是
2016-01-05 2016 1 5
用于日期比较大小的方法
__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__()小于(xx.__lt__(y) __ne__()不等于(x!=y)x.__ne__(y)
例
a=datetime.date(2016,1,1) b=datetime.date(2016,1,5) a.__eq__(b) False a.__ge__(b) False a.__gt__(b) False a.__le__(b) True a.__lt__(b) True a.__ne__(b) True
获得二个日期相差多少天
使用__sub__()和__rsub__()方法,其实二个方法差不太多,一个是正向操作,一个是反向操作:
a=datetime.date(2016, 1, 22) b=datetime.date(2016, 1, 15) print(a.__sub__(b).days) print(a.__rsub__(b).days)
打印结果
7 -7
ISO标准化日期
如果想要让所使用的日期符合ISO标准,那么使用如下三个方法:
isocalendar()返回一个包含三个值的元组,三个值依次为:year年份,week number周数,weekday星期数(周一为1…周日为7)
例
a = datetime.date(2016,1,5) print(a.isocalendar()) print(a.isocalendar()[0]) print(a.isocalendar()[1]) print(a.isocalendar()[2])
打印结果
(2016, 1, 2) 2016 1 2
isoformat()返回符合ISO 8601标准 (YYYY-MM-DD) 的日期字符串
a = datetime.date(2016,1,5) print(a.isoformat())
打印结果
2016-01-05
isoweekday()返回符合ISO标准的指定日期所在的星期数(周一为1…周日为7)
例
a = datetime.date(2016,1,5) print(a.isoweekday())
打印结果
2
与isoweekday()相似的还有一个weekday()方法,只不过是weekday()方法返回的周一为0, 周日为6
例
a = datetime.date(2016,1,5) print(a.weekday())
打印结果
1
timetuple()和time模块下的localtime()方法类似,返回一个类型为time.struct_time的数组,但有关时间的部分元素值为0
例
a = datetime.date(2016,1,5) print(a.timetuple())
打印结果
time.struct_time(tm_year=2016, tm_mon=1, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=5, tm_isdst=-1)
toordinal()返回公元公历开始到现在的天数。公元1年1月1日为1
例
a = datetime.date(2016,1,22) print(a.toordinal())
打印结果
735985
fromtimestamp()根据给定的时间戮,返回一个ISO标准时间字串
import time import datetime time.time() a = datetime.date.fromtimestamp(time.time()) print(a)
打印结果
2016-01-05
today()返回当前日期
2016-01-05
max:date类能表示的最大的年、月、日的数值
print(datetime.date.max)
打印结果
9999-12-31
min:date类能表示的最小的年、月、日的数值
print(datetime.date.min)
打印结果
0001-01-01
日期的字符串输出,直接上例子吧
a = datetime.date(2016,1,22) print(a.__format__("%Y-%m-%d")) print(a.__format__("%Y/%m/%d")) print(a.__format__("%D")) #打印结果 2016-01-22 2016/01/22 01/22/16
ctime()等价于time模块的ctime()
例
a = datetime.date(2016,1,22) print(a.ctime())
打印结果
Fri Jan 22 00:00:00 2016
python中时间日期格式化符号:
%y两位数的年份表示(00-99) %Y四位数的年份表示(000-9999) %m月份(01-12) %d月内中的一天(0-31) %H24小时制小时数(0-23) %I12小时制小时数(01-12) %M分钟数(00=59) %S秒(00-59) %a本地简化星期名称 %A本地完整星期名称 %b本地简化的月份名称 %B本地完整的月份名称 %c本地相应的日期表示和时间表示 %j年内的一天(001-366) %p本地A.M.或P.M.的等价符 %U一年中的星期数(00-53)星期天为星期的开始 %w星期(0-6),星期天为星期的开始 %W一年中的星期数(00-53)星期一为星期的开始 %x本地相应的日期表示 %X本地相应的时间表示 %Z当前时区的名称 %%%号本身