import:: import datetime doc:: datetime
类型 -> 对象 -> 方法
对象
- datetime.time: 表示时间,包含时、分、秒和毫秒
- datetime.date: 表示日期,包含年、月、日
- datetime.datetime: time 和 date 的聚合
- datetime.timedelta: 表示两个时间的间隔 #时间计算
- datetime.tzinfo:
- datetime.timezone
timedelta
from datetime import datetime
from datetime import timedelta
# 时间计算
now = datetime.now()
now - timedelta(hours=6) # 6小时前
# 返回: 2022-12-21 11:12:16.242389
方法
.today()
返回当天日期
from datetime import date
from datetime import datetime
date.today()
# 返回: 2022-12-21
datetime.today()
# 返回: 2022-12-21 16:59:33.943712
.fromisoformat()
格式化字符串为日期
from datetime import date
date.fromisoformat('2019-12-04')
date.fromisoformat('20191204')
# 返回: datetime.date(2019, 12, 4)
后一种需要 3.11 以上才支持,另外这个格式化方式不支持时间。
from datetime import date
today = date.today()
# 返回星期几,星期一为 0,周日为 6
today.weekday()
# 返回星期几,星期一为 1
today.isoweekday()
.timetuple()
转化为时间元组,缺点是时间长度不是统一两位数的。
tt = today.timetuple()
# 返回: time.struct_time(tm_year=2022, tm_mon=12, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=355, tm_isdst=-1)
# 可以直接获取元组内的任意值
tt.tm_year # 年, 返回 2022
tt.tm_mon # 月, 返回 12
.isocalendar()
以元组形式返回 year, week 和 weekday
today.isocalendar()
# 返回: datetime.IsoCalendarDate(year=2022, week=51, weekday=3)
# 也可以直接读取周数
today.isocalendar().week
# 返回 51
.now()
now = datetime.now()
# 返回 2022-12-21 16:31:33.471693
.strftime() 和 .strptime()
- strftime(): 把时间格式转换为字符串
- strptime(): 把字符串转换为时间格式
把时间转换为指定格式(字符串形式)
from datetime import datetime
now = datetime.now() # 2022-12-21 17:25:30.115357
# 把时间格式转换为字符串
str_now = now.strftime("%Y%m%d%H%M%S%f") # 20221221172615
# 把字符串重新转换为时间格式
datetime.strptime(str_now, "%Y%m%d%H%M%S%f") # 2022-12-21 17:26:01.500000