Python 标准库

datetime

2022-12-21

[[Python]] 中的时间模块,支持时间运算、格式化和解析。

类型

对象

  • datetime.time: 表示时间,包含时、分、秒和毫秒
  • datetime.date: 表示日期,包含年、月、日
  • datetime.datetime: time 和 date 的聚合
  • datetime.timedelta: 表示两个时间的间隔 #时间计算
  • datetime.tzinfo:
  • datetime.timezone

timedelta

1
from datetime import datetime
2
from datetime import timedelta
3
4
# 时间计算
5
now = datetime.now()
6
now - timedelta(hours=6) # 6小时前
7
# 返回: 2022-12-21 11:12:16.242389

方法

today

返回当天日期

1
from datetime import date
2
from datetime import datetime
3
4
date.today()
5
# 返回: 2022-12-21
6
datetime.today()
7
# 返回: 2022-12-21 16:59:33.943712

fromisoformat

格式化字符串为日期

1
from datetime import date
2
3
date.fromisoformat('2019-12-04')
1
date.fromisoformat('20191204')
2
# 返回: datetime.date(2019, 12, 4)

后一种需要 3.11 以上才支持,另外这个格式化方式不支持时间。

date

1
from datetime import date
2
3
today = date.today()
4
5
# 返回星期几,星期一为 0,周日为 6
6
today.weekday()
7
# 返回星期几,星期一为 1
8
today.isoweekday()

timetuple

转化为时间元组,缺点是时间长度不是统一两位数的。

1
tt = today.timetuple()
2
# 返回: 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)
3
4
# 可以直接获取元组内的任意值
5
tt.tm_year # 年, 返回 2022
6
tt.tm_mon # 月, 返回 12

isocalendar

以元组形式返回 year, week 和 weekday

1
today.isocalendar()
2
# 返回: datetime.IsoCalendarDate(year=2022, week=51, weekday=3)
3
4
# 也可以直接读取周数
5
today.isocalendar().week
6
# 返回 51

now

33.471693
1
now = datetime.now()

strftime

strptime

  • strftime(): 把时间格式转换为字符串
  • strptime(): 把字符串转换为时间格式

把时间转换为指定格式(字符串形式)

1
from datetime import datetime
2
3
now = datetime.now() # 2022-12-21 17:25:30.115357
4
# 把时间格式转换为字符串
5
str_now = now.strftime("%Y%m%d%H%M%S%f") # 20221221172615
6
7
# 把字符串重新转换为时间格式
8
datetime.strptime(str_now, "%Y%m%d%H%M%S%f") # 2022-12-21 17:26:01.500000

参考