python基础语法18-datetime模块

一、简介
Python中常用于时间的模块有time、datetime 和 calendar,顾名思义 time 是表示时间(时、分、秒、毫秒)等,calendar是表示日历时间的,之前介绍了time模块,今天说说 datetime模块。
datetime模块的五大类:
datetime.date  表示日期的类,主要用于处理年、月、日;
datetime.time  表示时间的类,主要用于处理时、分、秒;
datetime.datetime  表示日期时间的类,date类和time类的综合使用,可以处理年、月、日、时、分、秒;
datetime.timedelta  表示时间间隔,即两个时间点的间隔,主要用于做时间加减的
datetime.tzinfo   时区的相关信息。
datetime_CAPI    时间日期对象C语言接口
datetime.sys  各种系统信息
datetime.timezone 表示时区的类
datetime模块的常量:
常量            功能说明                用法            返回值
MAXYEAR    返回能表示的最大年份    datetime.MAXYEAR    9999
MINYEAR    返回能表示的最小年份    datetime.MINYEAR    1
二、datetime模块中部分类介绍
1.date类
date类包含三个参数,分别为year,month,day,返回格式为year-month-day。
其包含的构造方法如下:
__new__(year,month,day)  默认的构造函数,创建date类的对象时直接传入year,month,day三个参数即可返回对应的日期
fromtimestamp(t)  使用时间戳构造对象,使用方法为:datetime.date.fromtimestamp(t),传入参数t为一个时间戳,返回时间戳对应的日期
today()  使用今天的日期构造对象,使用方法为:datetime.date.tody(),无参数,返回今天的日期
fromordinal(n) 使用日期序数构造对象,使用方法为:datetime.date.fromordinal(n),传入参数为一个整数序数,代表从公元1年1月1日开始的序数,序数每增加1代表增加1天,返回最终计算出的日期
类方法:
timetuple()  返回日期对应的time.struct_time对象
tordinal()   相当与fromordinal(n)的逆过程,返回值即为fromordinal(n)中的日期序数n
weekday(),isoweekday()  返回该日期对应星期几,用[0,6]代表星期-到星期日。
isocalendar() 返回一个三元组,格式为(year,week,number,weekday),分别代表年,第几周,星期几
isoformat()  返回标准日期格式:YYYY-MM-DD
ctime()  返回格式为:Fri Dec 23 00:00:00 2022
strftime(format) 把日期按照format指定的格式进行格式化
replace(year,month,day) 传入参数为year,month,day,返回对应的新日期
示例:
import datetime as dt
d1 = dt.date(2022,12,23)
print(d1)
d2 = dt.date.today()
print(d2)
d3 = dt.date.fromordinal(500)
print(d3)
d4 = dt.date.fromordinal(5000)
t = d4.timetuple()
print(t)
n = d4.toordinal()
print(n)
day1 = d1.weekday()
print(day1)
day2 = d2.isocalendar()
print(day2)
day3 = d2.isoformat()
print(day3)
d = dt.date.today()
day = d.ctime()
print(day)
结果如下:
2022-12-23
2022-12-23
0002-05-15
time.struct_time(tm_year=14, tm_mon=9, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=252, tm_isdst=-1)
5000
4
(2022, 51, 5)
2022-12-23
Fri Dec 23 00:00:00 2022
2、time类
(1)静态方法和属性:可以直接通过类名调用;
time.min:time类所能表示的最小时间。
time.max:time类所能表示的最大时间。
time.resolution:time类表示时间的最小单位,这里是1微秒;
示例:
from datetime import *
print(time.max)
print(time.min)
print(time.resolution)
结果如下:
23:59:59.999999
00:00:00
0:00:00.000001
(2)其它常用方法和属性:通过time对象才能调用
#先构造一个time对象
t=time(10,58,59)
"属性"  t.hour、t.minute、t.second、t.microsecond:时、分、秒、微秒;
"方法"
t.replace(hour=,minute=,second=,microsecond=):生成一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性。(原有对象仍保持不变)  
t.isoformat():返回型如"HH:MM:SS"格式的字符串时间表示;
t.strftime(format):传入任意格式符,可以输出任意格式的时间表示形式;
3.datetime类
示例:
from datetime import datetime
from datetime import timedelta
#获取当前的日期,年月份
c=datetime.now().date()
print(c)
#获取每个时间的序列
d=datetime.now().timetuple()
print(d)
#获取月份(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
e=datetime.now().timetuple().tm_mon
print(e)
# 在我们现在的日期里面加入2天,最后打印出来,这里要注意,模块的使用,有优先级的混淆
f=datetime.now().date()+timedelta(days=2)
print(f)
# 在现在的时间里面向后推迟2个小时
g=datetime.now()+timedelta(hours=2)
print(g)
结果如下:
2022-12-23
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=23, tm_hour=16, tm_min=45, tm_sec=27, tm_wday=4, tm_yday=357, tm_isdst=-1)
12
2022-12-25
2022-12-23 18:45:27.084031
三、datetime模块简单使用
1.获取当前时间
from datetime import datetime as dt
now = dt.now()
print(now)
print(type(now))
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
print(now.microsecond)
结果如下:
2022-12-23 16:03:45.624622
<class 'datetime.datetime'>
2022
12
23
16
3
45
624622
2.时间间隔
两个datetime对象相减,得到的是一个timedelta对象,timedelta(天数,秒数,微秒,毫秒,分钟,小时)
from datetime import timedelta as tdt
det1 = dt(2022,6,30,20) - dt(2022,2,2,1)
print(det1)
print(dt(2022,6,10)+det1)
print(tdt(13,23,45,12,11,14))
结果如下:
148 days, 19:00:00
2022-11-05 19:00:00
13 days, 14:11:23.012045
3.datetime转字符串 strftime()
stamp = dt(2022,12,23)
print(str(stamp))
print(stamp.strftime("%Y/%m/%d %H:%M:%S"))
print(stamp.strftime("%Y-%m-%d %H:%M:%S"))
print(stamp.strftime("%Y/%m/%d"))
print(stamp.strftime("%Y-%m-%d"))
结果如下:
2022-12-23 00:00:00
2022/12/23 00:00:00
2022-12-23 00:00:00
2022/12/23
2022-12-23
4.字符串转datetime对象 datetime.strptime()
dates = ['11/12/2022','12/12/2022']
datelist = [dt.strptime(i,"%m/%d/%Y") for i in dates]
print(datelist)
结果如下:
[datetime.datetime(2022, 11, 12, 0, 0), datetime.datetime(2022, 12, 12, 0, 0)]
5.parse()解析字符串日期
将字符串形式的日期解析成datetime对象,字符串写法可以有很多,比如:
from dateutil.parser import parse
print(parse('11/12/2022'))
print(parse('2022-11-12'))
print(parse('2022.11.12'))
print(parse('2022 11 12'))
print(parse('2022, 11, 12'))
结果如下:
2022-11-12 00:00:00
2022-11-12 00:00:00
2022-11-12 00:00:00
2022-11-12 00:00:00
2022-11-12 00:00:00

猜你喜欢

转载自blog.csdn.net/a316495442/article/details/128421443
今日推荐