在 Python 中,处理日期和时间主要依靠标准库中的 datetime 模块,同时还有 time 和 calendar 模块提供辅助功能。以下是常用函数和操作总结:

1. 核心模块:datetime

获取当前日期和时间

from datetime import datetime, date, time

# 当前完整日期时间
now = datetime.now()  # 2025-08-13 14:30:45.123456

# 当前日期
today = date.today()  # 2025-08-13

# 当前时间
current_time = datetime.now().time()  # 14:30:45.123456

创建特定日期/时间

# 创建日期
d = date(2025, 8, 13)  # 年, 月, 日

# 创建时间
t = time(14, 30, 45)   # 时, 分, 秒

# 创建日期时间
dt = datetime(2025, 8, 13, 14, 30, 45)

日期时间计算(timedelta

from datetime import timedelta

# 加减天数
tomorrow = today + timedelta(days=1)

# 综合运算
new_time = now + timedelta(days=2, hours=-3, minutes=30)

格式化输出(strftime

formatted = now.strftime("%Y-%m-%d %H:%M:%S")  # 2025-08-13 14:30:45
# 常用格式符号:
# %Y 四位年份 | %m 月份 | %d 日期 | %H 小时(24h) | %I 小时(12h) | %M 分钟 | %S 秒

解析字符串为日期(strptime

text = "2025-08-13 14:30"
parsed_dt = datetime.strptime(text, "%Y-%m-%d %H:%M")

2. 时间戳操作

时间戳 ↔ 日期时间

import time

# 当前时间戳(秒级浮点数)
timestamp = time.time()  # 1755081000.123

# 时间戳 → 日期时间
dt_from_ts = datetime.fromtimestamp(timestamp)

# 日期时间 → 时间戳
ts = dt_from_ts.timestamp()

3. 时区处理

from datetime import timezone

# UTC 时间
utc_now = datetime.now(timezone.utc)  # 2025-08-13 06:30:45+00:00

# 转换时区(需安装 pytz 库)
import pytz
tz_sh = pytz.timezone("Asia/Shanghai")
local_time = utc_now.astimezone(tz_sh)  # 转换为上海时间

4. 其他实用功能

提取日期部分

year = now.year       # 2025
month = now.month     # 8
day = now.day         # 13
hour = now.hour       # 14
weekday = now.weekday()  # 0=周一, 1=周二... 6=周日

日期比较

if datetime(2025, 8, 13) < datetime(2025, 12, 31):
    print("在2025年内")

计算日期差

delta = datetime(2025, 12, 31) - datetime(2025, 8, 13)
print(delta.days)  # 140 (相差天数)

5. 辅助模块

time 模块

import time

# 休眠
time.sleep(2.5)  # 暂停2.5秒

# 性能计时
start = time.perf_counter()
# 执行代码...
end = time.perf_counter()
print(f"耗时: {end - start:.4f}秒")

calendar 模块

import calendar

# 判断闰年
print(calendar.isleap(2024))  # True

# 获取某月日历
print(calendar.month(2025, 8))  # 输出八月日历

示例:计算工作日(排除周末)

from datetime import datetime, timedelta

def add_workdays(start_date, days):
    current = start_date
    while days > 0:
        current += timedelta(days=1)
        if current.weekday() < 5:  # 0-4为周一到周五
            days -= 1
    return current

start = date(2025, 8, 13)  # 星期三
result = add_workdays(start, 3)  # 2025-08-18 (星期一)

掌握这些函数和操作,即可高效处理 Python 中的日期时间任务!