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

参考