一、datetime标准库的类
- datetime.date
- datetime.time
- datetime.datetime
- datetime.timedelta
二、date类
import datetime
import time
# 生成今天日期
d = datetime.date.today()
print(d, type(d))
# 按照参数生成日期
d = datetime.date(2022, 8, 24)
print(d, type(d))
# 用时间戳生成日期
d = datetime.date.fromtimestamp(time.time())
print(d, type(d))
运行结果:
# 类属性
print(datetime.date.min)
print(datetime.date.max)
print(datetime.date.resolution) # timedelts
运行结果:
# 实例属性
print(d.year)
print(d.day)
print(d.month)
运行结果:
# 常用的实例方法
# datetime.date对象 转化为结构化时间对象
print(d.timetuple())
# 其他方法
# replace(year, month, day)
print(d.replace(2022))
print(d.replace(d.year, 9))
print(d.replace(day=20))
print(d.replace(d.year, d.month, 20))
# d.toordinal() 从0001-01-01到现在的天数
# d.weekday() 0代表周一
# d.isoweekday() 1代表周一
# d.isoformat() 标准日期格式的返回
# d.strftime("%Y年%m月%d日")
print("{:=^50s}".format("datetime.time"))
运行结果:
二、time类
import datetime
# time
# 生成时间
t = datetime.time(15, 10, 45, 8888)
print(t, type(t))
# 类方法
print(datetime.time.min)
print(datetime.time.max)
print(datetime.time.resolution)
# 实例属性
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)
# 其他方法
print(t.isoformat())
print(t.strftime("%H时%M分%S秒 %f微秒"))
运行结果:
三、datetime类
import datetime
import time
dt = datetime.datetime(2020, 8, 30, 12, 2, 34, 8888)
print(dt, type(dt))
dt = datetime.datetime.today()
print(dt, type(dt))
dt = datetime.datetime.now()
print(dt, type(dt))
dt = datetime.datetime.utcnow()
print(dt, type(dt))
# 时间戳 -》 datetime
dt = datetime.datetime.fromtimestamp(time.time())
print(dt, type(dt))
# 字符串 -》 datetime
dt = datetime.datetime.strptime("2021-01-01 08:59:00", "%Y-%m-%d %H:%M:%S")
print(dt, type(dt))
# 结构化对象 -》 datetime
print(datetime.datetime.fromtimestamp(time.mktime(time.localtime())))
# date+time -> datetime
dt = datetime.datetime.combine(datetime.date(2021, 12, 11), datetime.time(15, 10, 45, 8888))
print(dt, type(dt))
# 属性
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
print(dt.microsecond)
# replace
print(dt.replace(second=57, day=20))
# datetime -> 结构化时间对象
print(dt.timetuple())
# datetime -> 时间戳
print(dt.timestamp())
# datetime -> 格式化字符串
print(dt.strftime('%Y年%m月%d日 %H时%M分%S秒 %f微秒'))
运行结果:
四 、datetime与其它表示方式的转换
五 、timedelta类
import datetime
import time
# datetime.timedelta
# class datetime.timedelta(days=0, second=0, microseconds=0, milliseconds=0, hours=0, weeks=0)
# 生成时间差
td = datetime.timedelta(days=10, hours=5)
print(td, type(td))
td = datetime.timedelta(days=-5, hours=5)
print(td, type(td))
td = datetime.timedelta(days=-5, hours=-8)
print(td, type(td))
td = datetime.timedelta(weeks=2)
print(td, type(td))
# 计算目标日期
dt = datetime.datetime.today()
print("现在是{}".format(dt.strftime("%Y年%m月-%d日 %H时%M分%S秒")))
delta = datetime.timedelta(days=10)
target = dt + delta
print("十天后是{}".format(target.strftime("%Y年%m月-%d日 %H时%M分%S秒")))
# 计算时间差
dt1 = datetime.datetime.today()
dt2 = datetime.datetime.utcnow()
td = dt1 - dt2
print("我们与UTC时间的差是:{:.0f}小时".format(td.seconds/3600))
运行结果: