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(days7) past now - timedelta(days7) print(f7天后: {future}) print(f7天前: {past}) # 加/减小时、分钟 future_time now timedelta(hours2, minutes30) print(f2小时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(fUTC时间: {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(days1) 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(f3月从 {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辅助生成代码示例均经过实际测试。