前言:
datetime库是;Python标准库中的一部分。在Python中,datetime库常常用来处理时间和日期。datetime库以类的方式提供多钟时间和日期的表达方式。
datetime库常用的四个类分别是:datetime.date、datetime.time、datetime.datetime、datetime.timedelta。如图,列出了四个类。
类名 | 说明 |
datetime.date | 表示日期的类,可以表示年、月、日 |
datetime.time | 表示时间的类,可以表示时、分、秒、毫秒 |
datetime.datetime | 表示日期和时间的类,包括年、月、日、时、分、秒、毫秒 |
datetime.timedelta | 表示时间间隔,即两个时间点的间隔 |
一、datetime.date类
date对象由year(年)、month(月)、day(日)三部分构成,代码如下:
date(year,month,day)
date类对象的参数说明:
year:表示年,范围[1,9999]
month:表示月,范围[1,12]
day:表示天,范围有具体的年份和月份确定,比如说闰年2月份有29天。
方法、属性 | 说明 |
.year | 返回日期的年份 |
.month | 返回日期的月份 |
.day | 返回日期的日 |
datetime.date.today() | 获取系统的日期 |
datetime,date.weekday() | 返回日期的星期,星期一,返回0;星期二,返回1;.... |
datetime.date.isoweekday() | 返回日期的星期,星期一,返回1;星期二,返回2;.... |
.replace(year,month,day) |
生成并返回一个新的日期对象,原时间对象不变 |
datetime.date类方法/属性的应用
>>>import datetime
>>>#获取当前系统的日期
>>>d1=datetime.date.today()
>>>print(d1)
2024-11-10
>>>#返回日期的年份
>>>d1.year
2024
>>>#返回日期的月份
>>>d1.month
11
>>>#返回日期的日
>>>d1.day
10
>>>#detetime.date.weekday()返回日期的星期,星期一对应0
>>>datetime.date.weekday(d1)
6
>>>#datetime.date.isoweekday()返回日期的星期,星期一对应1,则星期二对应2
>>>d2=datetime.date(2024,11,5)
>>>datetime.date.isoweekday(d2)
2
>>>#生成一个新的日期对象d3,原时间d2对象不变
>>>d3=d2.replace(year=2025)
>>>d3
datetime.date(2025, 11, 5)
>>>d2
datetime.date(2024, 11, 5)
二、datetime.time类
time类有hour(时)、minute(分)、second(秒)、microsecond(毫秒)和tzinfo(时区)五部分组成,代码如下:
time([hour[,minute[,second[,microsecond[,tzinfo]]]]])
time类对象的参数说明:
hour:表示小时,范围[0,23]
minute:表示分钟,范围:[0,59]
second:表示秒,范围:[0,59]
microsecond:表示毫秒,范围:[0,1000000)
tzinfo:表示zinfo的子类对象。
如表所示列出了datetime.date类常用的方法/属性
方法/属性 | 说明 |
.hour | 返回时间的小时 |
.minute | 返回时间的分钟 |
.second | 返回时间的秒 |
.microsecond | 返回时间的毫秒 |
datetime.time.max | time类所能表示的最大时间:time(23,59,59,999999) |
datetime.time.min | time类所能表示的最小时间:time(0,0,0,0) |
t.replace(hour[,minute[,second[,microsecond[,tzinfo]]]]) | 生成并返回一个新的时间对象,原时间对象不变 |
>>>import datetime
>>>#返回time类所能表示的最大时间
>>>datetime.time.max
datetime.time(23, 59, 59, 999999)
>>>#返回time类所能表示的最小时间
>>>datetime.time.min
datetime.time(0, 0)
>>>#生成time类对象的t
>>>t=datetime.time(12,23,45,10000)
>>>print(t)
12:23:45.010000
>>>#返回对象t的小时
>>>t.hour
12
>>>#返回对象t的秒
>>>t.second
45
>>>#生成并返回一个新的时间对象t1,原时间对象不变
>>>t1=t.replace(hour=2,minute=55)
>>>t1
datetime.time(2, 55, 45, 10000)
>>>print(t1)
02:55:45.010000
三、datetime.datetime类
datetime类可以看作是date类和time类的集合,datetime类的大部分方法和属性都继承于date类和time类。
datetime类由year(年)、month(月)、day(日)、hour(时)、minute(分)、second(秒)、microsecond(毫秒)和tzinfo(时区)八部分组成,代码如下:
time(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
下表列出了datetime.datetime类的常用方法和属性,与date类和time类相同的方法/属性不在列举。
方法/属性 | 说明 |
datetime.datetime.now() | 返回当前系统的日期时间 |
datetime.datetime.now().date() | 返回当前系统的日期时间的日期部分 |
datetime.datetime.now().time | 返回当前系统的日期时间的时间部分 |
datetime.datetime.now().year | 返回当前系统的日期时间的年份 |
datetime.datetime.now().month | 返回当前系统的日期时间的月份 |
datetime.datetime.now().day | 返回当前系统的日期时间的日 |
datetime.datetime.now().hour | 返回当前系统的日期时间的小时 |
datetime.datetime.now().minute | 返回当前系统的日期时间的分钟 |
datetime.datetime.now().second | 返回当前系统的日期时间的秒 |
.strftime() | 将日期格式转化为字符串格式 |
strftime()方法实现了时间和日期的格式化,可以将日期转化为字符串格式。
下表列举了strftime()方法的格式符号。
格式化符号 | 表示 | 说明 |
%Y | 年份 | 0001-9999,例如:2024 |
%m | 月份 | 01-12,例如:11 |
%B | 月名 | January-December,例如:November |
%b | 月名缩写 | Jan-Dec,例如:Nov |
%d | 日期 | 01-31,例如:10 |
%A | 星期 | Monday-Sunday,例如:Sunday |
%a | 星期缩写 | Mon-Sun,例如:Sun |
%H | 小时(24h制) | 00-23,例如:15 |
%I | 小时(12h制) | 01-12,例如:3 |
%p | 上/下午 | AM,PM,例如:PM |
%M | 分钟 | 00-59,例如:00 |
%S | 秒 | 00-59,例如:23 |
datetime.datetime类方法/属性的应用,代码如下:
>>>import datetime
>>>#返回当前系统的日期时间
>>>datetime.datetime.now()
datetime.datetime(2024, 11, 15, 11, 15, 3, 475472)
>>>print(datetime.datetime.now())
2024-11-15 11:15:28.871037
>>>#返回当前系统的日期
>>>datetime.datetime.now().date()
datetime.date(2024, 11, 15)
>>>#返回当前系统的时间
>>>datetime.datetime.now().time()
datetime.time(11, 16, 46, 228278)
>>>#返回当前系统日期的年份
>>>datetime.datetime.now().year
2024
>>>#返回当前系统日期的月份
>>>datetime.datetime.now().month
11
>>>#返回当前系统日期的小时
>>>datetime.datetime.now().hour
11
>>>#返回当前系统日期的分钟
>>>datetime.datetime.now().minute
19
>>>#返回当前系统日期的秒
>>>datetime.datetime.now().second
59
>>>#返回当前系统日期的毫秒
>>>datetime.datetime.now().microsecond
911968
>>>#格式化输出当前的系统日期时间
>>>today=datetime.datetime.now()
>>>print(today.strftime('今天是%Y年%m月%d日%H点%M分%S秒'))
今天是2024年11月15日11点21分42秒
例:
李华2002年出生,编写程序计算李华的年龄,代码如下:
import datetime
birthdayyear=2002
age=datetime.datetime.now().year-birthdayyear
print("李华的年龄为",age)
四、datetime.timedelta类
datetime.timedelta类用于计算两个datetime.datetime或者datetime.datetime类之间的时间差,能够很方便地解决时间之间的计算问题。
datetime.timedelta类的应用,代码如下:
>>>import datetime
>>>#today是当前系统的日期时间
>>>today=datetime.datetime.now()
>>>print(today)
2024-11-15 11:35:01.054766
>>>#today 日期三天后
>>>d=today+datetime.timedelta(3)
>>>print(d)
2024-11-18 11:35:01.054766
>>>#today 日期三天前
>>>d=today+datetime.timedelta(-3)
>>>print(d)
2024-11-12 11:35:01.054766
>>>#today 时间的三小时后
>>>d=today+datetime.timedelta(hours=3)
>>>print(d)
2024-11-15 14:35:01.054766
>>>#today 时间的三小时前
>>>d=today+datetime.timedelta(hours=-3)
>>>print(d)
2024-11-15 08:35:01.054766
总结:
上面讲解了datetime库不同类的使用方法,它们是处理日期和时间的表达方式,学习和运用这几种类的方法,可以有效地处理日期和时间。
最后,祝大家生活愉快。