datetime模块定义
python中的datetime模块提供了操作日期和时间功能, 该模块提供了一下类对象
日期和时间进行操作的内置模块,time模块、datetime模块和calendar模块
datetime模块常用三个"类" date time datetime
一个文件是一个模块,一个模块里面有多个类,一个类有多个方法
datetime模块下的类
类名 描述 datetime.date 日期类 datetime.time 时间类 datetime.datetime 日期与时间类 datetime.timedelta 表示两个date、time、datetime实例之间的时间差 datetime.tzinfo 时区相关信息对象的抽象基类。 datetime.timezone Python3.2中新增的功能,实现tzinfo抽象基类的类,表示与UTC的固定偏移量
两个属性
常量 功能说明 返回值 描述 datetime.MAXYEAR 返回能表示的最大年份 9999 ** datetime.MINYEAR** 返回能表示的最小年份 1
date类
date类定义
datetime模块下的日期类(date),只能处理年月日这种日期时间,不能处理时分秒。
例如
#date 类
#定义
'''
class datetime.date(year,month,day)
'''
import datetime as dt #as 起别名
date = dt.date(2021,10,11) #从datetime模块里面调用date类
#date.max date对象所能表示的最大日期:9999-12-31
print(date.max) #9999-12-31
#date.resolution date对象表示的日期最小单位:天
print(date.resolution) #1 day, 0:00:00
#20190809 /60/60/60/12 根据跟定的时间戳,放回一个date对象
print(date.fromtimestamp(20190809)) #1970-08-23
#date.today() 放回一个当前本地日期的date对象
print(date.today()) #2021-10-11
#
print(date.year) #2021
#date.replace(year,month,day) 生成一个新的日期对象,原日期对象不变
print(date.replace(1937,8,8)) #1789-10-11
print(date.weekday()) #0
print(date.isoweekday()) #1
date类常用的方法和属性
类方法**/属性名称** 描述 date.max date对象所能表示的最大日期:9999-12-31 date.min date对象所能表示的最小日期:00001-01-01 date.resoluation date对象表示的日期的最小单位:天 date.today() 返回一个表示当前本地日期的date对象 date.fromtimestamp(timestamp) 根据给定的时间戳,返回一个date对象 d.year 年 d.month 月 d.day 日 d.replace(year[, month[, day]]) 生成并返回一个新的日期对象,原日期对象不变 d.timetuple() 返回日期对应的time.struct_time对象 d.toordinal() 返回日期是是自0001-01-01开始的第多少天 d.weekday() 返回日期是星期几,[0, 6],0表示星期一 d.isoweekday() 返回日期是星期几,[1, 7], 1表示星期一 d.isocalendar() 返回一个元组,格式为:(year, weekday, isoweekday) d.isoformat() 返回‘YYYY-MM-DD’格式的日期字符串 d.strftime(format) 返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
例如
import time
from datetime import date
print(date.max) # 9999-12-31
print(date.min) # 0001-01-01
print(date.resolution) # 1 day, 0:00:00
print(date.today()) # 2020-03-17
print(date.fromtimestamp(time.time())) # 2020-03-17
d = date.today()
print(d.year) # 2020
print(d.month) # 3
print(d.day) # 17
print(d.replace(2019)) # 2019-03-17
print(d.replace(2019, 5)) # 2019-05-17
print(d.replace(2019, 5, 21)) # 2019-05-21
print(d.timetuple()) # time.struct_time(tm_year=2020, tm_mon=3, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=77, tm_isdst=-1)
print(d.toordinal()) # 737501
print(d.weekday()) # 1
print(d.isoweekday()) # 2
print(d.isocalendar()) # (2020, 12, 2)
print(d.isoformat()) # 2020-03-17
print(d.ctime()) # Tue Mar 17 00:00:00 2020
print(d.strftime('%Y/%m/%d')) # 2020/03/17
time类
time类常用的方法
类方法**/属性名称** 描述 time.max time类所能表示的最大时间:time(23, 59, 59, 999999) time.min time类所能表示的最小时间:time(0, 0, 0, 0) time.resolution 时间的最小单位,即两个不同时间的最小差值:1微秒 t.hour 时 t.minute 分 t.second 秒 t.microsecond 微秒 t.tzinfo 返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) 生成并返回一个新的时间对象,原时间对象不变 t.isoformat() 返回一个‘HH:MM:SS.%f’格式的时间字符串 t.strftime() 返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同
例如
from datetime import time #导包
print(time.max) # 23:59:59.999999
print(time.min) # 00:00:00
print(time.resolution) # 0:00:00.000001
t = time(12, 15, 40, 6666)
print(t.hour) # 12
print(t.minute) # 15
print(t.second) # 40
print(t.microsecond) # 6666
print(t.replace(21)) # 21:15:40.006666
print(t.isoformat()) # 12:15:40.006666
print(t.strftime('%H%M%S')) # 121540
print(t.strftime('%H%M%S.%f')) # 121540.006666
datetime.datetime类
datetime.datetime类定义
date和time类的一个组合
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
一定要注意这是datetime模块下的datetime类,千万不要搞混了!datetime模块下的日期时间类,你可以理解为datetime.time和datetime.date的组合类
datetime类常用的方法
类方法**/属性名称** 描述 datetime.today() 返回一个表示当前本期日期时间的datetime对象 datetime.now([tz]) 返回指定时区日期时间的datetime对象,如果不指定tz参数则结果同上 datetime.utcnow() 返回当前utc日期时间的datetime对象 datetime.fromtimestamp(timestamp[, tz]) 根据指定的时间戳创建一个datetime对象 datetime.utcfromtimestamp(timestamp) 根据指定的时间戳创建一个datetime对象 datetime.combine(date, time) 把指定的date和time对象整合成一个datetime对象 datetime.strptime(date_str, format) 将时间字符串转换为datetime对象 dt.year, dt.month, dt.day 年、月、日 dt.hour, dt.minute, dt.second 时、分、秒 dt.microsecond, dt.tzinfo 微秒、时区信息 dt.date() 获取datetime对象对应的date对象 dt.time() 获取datetime对象对应的time对象,tzinfo为None dt.timetz() 获取datetime对象对应的time对象,tzinfo与datetime对象的tzinfo相同 dt.replace() 生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象 dt.timetuple() 返回datetime对象对应的tuple(不包括tzinfo) dt.utctimetuple() 返回datetime对象对应的utc时间的tuple(不包括tzinfo) dt.timestamp() 返回datetime对象对应的时间戳,Python 3.3才新增的 dt.toordinal() 同date对象 dt.weekday() 同date对象 dt.isocalendar() 同date对象 dt.isoformat([sep]) 返回一个‘%Y-%m-%d’字符串 dt.ctime() 等价于time模块的time.ctime(time.mktime(d.timetuple())) dt.strftime(format) 返回指定格式的时间字符串
例如
import datetime
#一年有多少秒
print(datetime.timedelta(365).total_seconds()) #31536000.0
#获取现在时间
dt = datetime.datetime.now()
"""
print(dt) #2021-10-04 17:22:31.928545
print(dt + datetime.timedelta(3)) # 3天后 2021-10-07 17:23:33.130410
print(dt + datetime.timedelta(-3)) # 3天前 2021-10-01 17:23:33.130410
print(dt + datetime.timedelta(hours=3)) # 3小时后 2021-10-04 20:24:30.536769
print(dt + datetime.timedelta(hours=-3)) # 3小时前 2021-10-04 14:24:30.536769
print(dt + datetime.timedelta(hours=3, seconds=30)) # 3小时30秒后 2021-10-04 20:25:55.309684
"""
dt2 = dt + datetime.timedelta(hours=10)
print(dt2 - dt) # 10:00:00
td = dt2 - dt
print(td.seconds) # 36000