⏰ Python日期时间处理完全指南:从datetime到实战技巧
⏰ Python日期时间处理完全指南:从datetime到实战技巧 --- 📌 引言 在Python编程中,日期和时间的处理是不可或缺的技能。无论是记录日志、处理用户数据,还是构建定时任务,都需要与日期时间打交道。本文将深入讲解Python的datetime模块,从基础概念到实战技巧,帮助你彻底掌握日期时间处理。 🎯 一、datetime模块核心类 Python的datetime模块提供了五个核心类: - date:日期(年、月、日) - time:时间(时、分、秒、微秒) - datetime:日期和时间的组合 - timedelta:两个日期/时间之间的差值 - tzinfo:时区信息基类 💻 二、基础操作代码示例 1. 获取当前日期时间 ```python from datetime import datetime, date, time # 获取当前日期时间 now = datetime.now() print(f"当前日期时间: {now}") print(f"当前日期: {date.today()}") # 获取具体时间组件 print(f"年: {now.year}, 月: {now.month}, 日: {now.day}") print(f"时: {now.hour}, 分: {now.minute}, 秒: {now.second}") ``` 2. 创建自定义日期时间 ```python from datetime import datetime, date, time # 创建自定义日期 d = date(2024, 3, 15) print(f"自定义日期: {d}") # 创建自定义时间 t = time(14, 30, 0) print(f"自定义时间: {t}") # 创建自定义日期时间 dt = datetime(2024, 3, 15, 14, 30, 0) print(f"自定义日期时间: {dt}") ``` 3. 日期时间格式化 ```python from datetime import datetime now = datetime.now() # strftime: 日期时间 -> 字符串 formatted = now.strftime("%Y-%m-%d %H:%M:%S") print(f"格式化后: {formatted}") # 常用格式代码 print(now.strftime("%Y年%m月%d日")) # 2024年03月15日 print(now.strftime("%H:%M:%S")) # 14:30:00 print(now.strftime("%A, %B %d, %Y")) # Friday, March 15, 2024 # strptime: 字符串 -> 日期时间 date_str = "2024-03-15 14:30:00" parsed = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") print(f"解析后: {parsed}") ``` ⚡ 三、timedelta时间计算 ```python from datetime import datetime, timedelta now = datetime.now() # 加/减天数 future = now + timedelta(days=7) past = now - timedelta(days=7) print(f"7天后: {future}") print(f"7天前: {past}") # 加/减小时、分钟 future_time = now + timedelta(hours=2, minutes=30) print(f"2小时30分钟后: {future_time}") # 计算时间差 deadline = datetime(2024, 12, 31) diff = deadline - now print(f"距离年底还有: {diff.days} 天") ``` 🌍 四、时区处理 ```python from datetime import datetime import pytz # 获取当前UTC时间 utc_now = datetime.now(pytz.UTC) print(f"UTC时间: {utc_now}") # 转换为特定时区 beijing_tz = pytz.timezone('Asia/Shanghai') beijing_now = utc_now.astimezone(beijing_tz) print(f"北京时间: {beijing_now}") # 常用时区 ny_tz = pytz.timezone('America/New_York') tokyo_tz = pytz.timezone('Asia/Tokyo') print(f"纽约时间: {utc_now.astimezone(ny_tz)}") print(f"东京时间: {utc_now.astimezone(tokyo_tz)}") ``` 🛠️ 五、实战技巧 1. 计算两个日期之间的所有日期 ```python from datetime import datetime, timedelta def date_range(start_date, end_date): """生成日期范围内的所有日期""" current = start_date while current <= end_date: yield current current += timedelta(days=1) start = datetime(2024, 3, 1) end = datetime(2024, 3, 5) for d in date_range(start, end): print(d.strftime("%Y-%m-%d")) ``` 2. 获取本月第一天和最后一天 ```python from datetime import datetime, timedelta import calendar def month_bounds(year, month): """获取指定月份的第一天和最后一天""" first_day = datetime(year, month, 1) last_day_num = calendar.monthrange(year, month)[1] last_day = datetime(year, month, last_day_num) return first_day, last_day first, last = month_bounds(2024, 3) print(f"3月从 {first.date()} 到 {last.date()}") ``` 3. 时间戳转换 ```python from datetime import datetime import time # 当前时间戳(秒) timestamp = time.time() print(f"当前时间戳: {timestamp}") # 时间戳转日期时间 dt_from_ts = datetime.fromtimestamp(timestamp) print(f"时间戳转日期时间: {dt_from_ts}") # 日期时间转时间戳 ts = int(datetime.now().timestamp()) print(f"日期时间转时间戳: {ts}") ``` 📋 六、常用格式代码表 | 代码 | 含义 | 示例 | |------|------|------| | %Y | 4位年份 | 2024 | | %m | 2位月份 | 03 | | %d | 2位日期 | 15 | | %H | 24小时制小时 | 14 | | %M | 分钟 | 30 | | %S | 秒 | 00 | | %A | 星期几(全称) | Friday | | %B | 月份(全称) | March | 🎓 总结 本文详细介绍了Python日期时间处理的核心知识: - datetime模块:掌握date、time、datetime、timedelta四大核心类 - 格式化与解析:熟练使用strftime和strptime进行格式转换 - 时间计算:使用timedelta进行日期时间的加减运算 - 时区处理:借助pytz库处理跨时区场景 - 实战技巧:日期范围生成、月份边界计算、时间戳转换 掌握这些技能后,你就能轻松应对各种日期时间处理需求。记住:好的时间处理代码是健壮系统的基石。 (本文内容部分由AI辅助生成,代码示例均经过实际测试。)

浙公网安备 33010602011771号