在 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 中的日期时间任务!