一、datetime模块介绍
1. datetime模块包含如下类
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecind |
Timedelta | 时间间隔,即两个时间点之间的长度 |
2. datetime模块中包含的常量
常量 | 功能说明 | 用法 | 返回值 |
---|---|---|---|
MAXYEAR | 返回能表示的最大年份 | datetime.MAXYEAR | 9999 |
MINYEAR | 返回能表示的最小年份 | datetime.MINYEAR | 1 |
二、date类
1.date对象构成及构造函数
1.1 date对象由year年份,month月份和day日期三部分构成
# 构造函数
date(year, month, day)
# 访问元素
>> a = datetime.date.today()
>> a.year, a.month, a.day
>> (2020, 11, 16)
2 对date的操作
2.1 比较大小
a = datetime.date(2011, 1, 1)
b = datetime.date(2011, 1, 2)
a == b, a <= b, a >= b
# output
(False, True, False)
2.2 作差
a = datetime.date(2011, 1, 1)
b = datetime.date(2011, 1, 2)
a - b, b - a
# output
(datetime.timedelta(days=-1), datetime.timedelta(days=1))
2.3 其他方法和属性
2.3.1 根据时间戳返回一个date
对象
datetime.date.fromtimestamp(1599114180.0)
# output
datetime.datetime(2020, 9, 3)
3.date对象的字符串输出
3.1 格式化输出
a = datetime.date(2011, 1, 1)
a.strftime('%Y-%m-%d')
# output
'2011-01-01'
3.2 简单转字符串输出
a = datetime.date(2011, 1, 1)
str(a)
# output
'2011-01-01'
三、time类
1.time类的数据构成及构造函数
1.1 time对象由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成
time([hour[, minute[, second[, microsecond[, tzinfo]]]]])
e.g.
a = datetime.time(12, 20, 59, 899)
a, a.hour, a.minute, a.second, a.microsecond, a.tzinfo
# output
(datetime.time(12, 20, 59, 899), 12, 20, 59, 899, None)
2. 对time的操作
2.1 比较大小
a = datetime.time(12, 20, 59, 999)
b = datetime.time(12, 20, 59, 998)
a == b, a >= b , a <= b
# output
(False, True, False)
2.2 time不支持作差,需要使用datetime类
3. time对象字符串输出
四、datetime类
1.datetime类的数据构成及构造函数
datetime
类其实是可以看做是date
类和time
类的合体,其大部分的方法和属性都继承于这二个类,相关的操作方法请参阅,本文上面关于二个类的介绍。其数据构成也是由这二个类所有的属性所组成的。
# 构造函数
datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
a = datetime.datetime(2020, 11, 16, 20, 28, 59, 999)
a.year, a.month, a.day, a.hour, a.minute, a.second, a.microsecond, a.tzinfo
# output
(2020, 11, 16, 20, 28, 59, 999, None)
2.对datetime对象的操作
2.1 datetime对象返回一个 date对象 或 一个time对象
dt = datetime.datetime.now()
dt.date(), dt.time()
# output
(datetime.date(2020, 11, 16), datetime.time(20, 49, 18, 116494))
2.2 combine(…) 合并date对象和time对象到datetime对象
d = datetime.date(2020, 11, 16)
t = datetime.time(20, 47, 59, 999)
dt = datetime.datetime.combine(d, t)
dt
# output
datetime.datetime(2020, 11, 16, 20, 47, 59, 999)
2.3 strptime(str, format) 根据format 将str生成datetime对象
str = '2020年11月16日 20:50'
dt = datetime.datetime.strptime(str, "%Y年%m月%d日 %H:%M")
dt
# ooutput
datetime.datetime(2020, 11, 16, 20, 50)
2.4 fromtimestamp(time_stamp)将time_stamp转换datetime对象
dt = datetime.datetime.fromtimestamp(1599114180.0)
dt
# output
datetime.datetime(2020, 9, 3, 14, 23)
五、 timedelta类
timedelta
类是用来计算二个datetime
对象的差值的。
此类中包含如下属性:
1、days
:天数
2、microseconds
:微秒数(>=0 并且 <1秒)
3、seconds
:秒数(>=0 并且 <1天)
六、一点练习
1.获取当前日期时间:
now = datetime.datetime.now()
now, now.date(), now.time()
- 获取上个月第一天和最后一天的日期
ans1 = datetime.datetime(now.year, now.month-1, 1)
ans2 = datetime.datetime(now.year, now.month, 1) - datetime.timedelta(1)
ans1, ans2
- 获取时间差
starttime = datetime.datetime.now()
endtime = datetime.datetime.now()
(endtime - starttime).seconds # {timedelta属性:days, seconds, microseconds}
- 计算当前时间向后8个小时的时间
now = datetime.datetime.now()
d2 = now + datetime.timedelta(hours = 8, minutes = 9, seconds = 10, microseconds = 11)
d2
# output
datetime.datetime(2020, 11, 17, 5, 23, 47, 818430)