【python 内置模块】datetime

2024-01-20 00:00:00

目录:

datetime 模块介绍

专门用于处理日期和时间,提供了一系列类(如 date、time、datetime、timedelta)来创建、操作、格式化和计算日期时间对象,是进行时间相关编程的基础工具。

  • datetime.date:表示一个日期(年、月、日),不包含时间信息;
  • datetime.time:表示一天中的一个时间点(时、分、秒、微秒),不包含日期信息;
  • datetime.datetime:这是最常用的类,它是 date 和 time 的结合体,表示一个具体的日期和时间(年、月、日、时、分、秒、微秒);
  • datetime.timedelta:表示两个日期或时间之间的间隔(差值),例如“5天3小时”或“3600秒”。它主要用于时间的加减运算;

使用 datetime 构造函数创建 datetime 对象

from datetime import datetime

# 创建一个表示 2023年10月1日 12点30分45秒 的datetime对象
specific_dt = datetime(2023, 10, 1, 12, 30, 45)
print(specific_dt)  # 输出:2023-10-01 12:30:45

使用 strptime() 解析字符串创建 datetime 对象

from datetime import datetime

date_string = "2023-10-01 12:30:45"
date_format = "%Y-%m-%d %H:%M:%S"
parsed_dt = datetime.strptime(date_string, date_format)
print(parsed_dt)  # 输出:2023-10-01 12:30:45

这里的格式字符串 %Y-%m-%d %H:%M:%S 必须与待解析的字符串格式严格匹配。常用格式符包括:%Y(四位年份)、%m(两位月份)、%d(两位日期)、%H(24小时制小时)、%M(分钟)、%S(秒)。

使用 combine() 组合日期和时间创建 datetime 对象

from datetime import date, time, datetime

d = date(2023, 10, 1)  # 创建一个日期对象
t = time(12, 30, 45)   # 创建一个时间对象
combined_dt = datetime.combine(d, t)
print(combined_dt)     # 输出:2023-10-01 12:30:45

使用时间戳创建 datetime 对象

from datetime import datetime

# 使用一个特定的时间戳(例如:1609459200 代表 2021-01-01 00:00:00 UTC)
specific_timestamp = 1609459200
specific_dt = datetime.fromtimestamp(specific_timestamp)
print(specific_dt)  # 输出对应的本地日期时间,例如:2021-01-01 08:00:00(北京时间)

日期格式化

from datetime import datetime

# 获取当前时间
now = datetime.now()

# 格式化为 "YYYY-MM-DD HH:MM:SS"
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)  # 输出类似:2026-01-04 10:15:30
格式 描述 示例
%Y 四位数的年份 2026
%y 两位数的年份 26
%m 两位数的月份 (01-12) 01
%B 月份的全称 January
%b 或 %h 月份的缩写 Jan
%d 两位数的日期 (01-31) 04
%A 星期几的全称 Sunday
%a 星期几的缩写 Sun
%H 24小时制的小时 (00-23) 14
%I 12小时制的小时 (01-12) 02
%M 分钟 (00-59) 30
%S 秒 (00-59) 45
%p AM 或 PM PM

更多示例:

from datetime import datetime

now = datetime.now()

print("ISO 格式 (国际标准):", now.strftime("%Y-%m-%dT%H:%M:%S"))
print("中文常用格式:", now.strftime("%Y年%m月%d日 %H时%M分%S秒"))
print("美国日期格式:", now.strftime("%m/%d/%Y"))
print("欧洲日期格式:", now.strftime("%d/%m/%Y"))
print("带星期几:", now.strftime("%A, %B %d, %Y"))
print("12小时制时间:", now.strftime("%I:%M:%S %p"))
print("仅日期 (短横线):", now.strftime("%Y-%m-%d"))
print("一年中的第几天:", now.strftime("第 %j 天"))
print("带微秒的精确时间:", now.strftime("%H:%M:%S.%f"))

计算时间间隔和加减

使用 timedelta 可以方便地进行时间间隔的加减

from datetime import datetime, timedelta

now = datetime.now()

# 加法:计算未来时间
future_time = now + timedelta(days=5, hours=2)  # 5天2小时后
print(future_time)

# 减法:计算过去时间
past_time = now - timedelta(weeks=2)  # 2周前
print(past_time)

# 计算两个日期之间的天数差
date1 = date(2023, 10, 5)
date2 = date(2023, 10, 10)
difference = date2 - date1
print(difference.days)  # 输出: 5

常用函数

常用函数列举如下:

  • datetime.now() 获取当前时间,返回 datetime 对象;
  • datetime 对象调用 date() 获取日期部分,调用 time() 获取时间部分;
  • date.today() 获取当前日期,返回 date 对象;
from datetime import datetime, date, time

now = datetime.now()        # 2026-01-04 21:42:58.509936
d = now.date()              # 2026-01-04
t = now.time()              # 21:42:58.509936

today = date.today()        # 2026-01-04

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: