[[Python]] 中的时间模块,支持时间运算、格式化和解析。
类型
对象
- datetime.time: 表示时间,包含时、分、秒和毫秒
- datetime.date: 表示日期,包含年、月、日
- datetime.datetime: time 和 date 的聚合
- datetime.timedelta: 表示两个时间的间隔 #时间计算
- datetime.tzinfo:
- datetime.timezone
timedelta
from datetime import datetimefrom datetime import timedelta
# 时间计算now = datetime.now()now - timedelta(hours=6) # 6小时前# 返回: 2022-12-21 11:12:16.242389
方法
today
返回当天日期
from datetime import datefrom datetime import datetime
date.today()# 返回: 2022-12-21datetime.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 以上才支持,另外这个格式化方式不支持时间。
date
from datetime import date
today = date.today()
# 返回星期几,星期一为 0,周日为 6today.weekday()# 返回星期几,星期一为 1today.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 # 年, 返回 2022tt.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()
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