文章目录
- from datetime import datetime now = datetime.now() # 2023-05-15 14:30:45.123456
- # 日期时间 → 字符串 s = now.strftime(“%Y-%m-%d %H:%M:%S”) # “2023-05-15 14:30:45” # 字符串 → 日期时间 dt = datetime.strptime(“2023-05-15”, “%Y-%m-%d”) # 时间部分默认为 00:00:00
- from datetime import timedelta # 加减时间 tomorrow = now + timedelta(days=1) last_hour = now – timedelta(hours=1) # 计算时间差 diff = tomorrow – now print(diff.total_seconds()) # 86400.0 秒
- from datetime import timezone, timedelta # 创建 UTC+8 时区 tz_beijing = timezone(timedelta(hours=8)) dt_local = datetime(2023, 5, 15, 14, 30, tzinfo=tz_beijing) # 转换为 UTC 时间 dt_utc = dt_local.astimezone(timezone.utc) # 2023-05-15 06:30:00+00:00
- date_part = now.date() # 返回 date 对象 time_part = now.time() # 返回 time 对象 year = now.year # 2023
目录
- 主要类
- 关键操作示例
- 1. 获取当前时间
- 2. 时间格式化与解析
- 3. 时间计算
- 4. 时区处理
- 5. 获取日期/时间部分
- 格式化符号表
- 最佳实践
- 完整示例
Python 的 datetime 模块是处理日期和时间的核心库,提供了丰富的类和方法来操作日期、时间、时间间隔和时区。以下是对该模块的详细介绍:
-
datetime.date
处理日期(年、月、日)。
- 属性:
year, month, day
- 常用方法:
date.today(): 返回当前本地日期。
date.fromisoformat("YYYY-MM-DD"): 从字符串解析日期。
date.replace(year, month, day): 替换日期部分。
date.weekday(): 返回星期几(0=周一, 6=周日)。
date.strftime(format): 格式化日期为字符串。
-
datetime.time
处理时间(时、分、秒、微秒)。
- 属性:
hour, minute, second, microsecond, tzinfo(时区)
- 常用方法:
time.replace(hour, minute, second, microsecond): 替换时间部分。
time.strftime(format): 格式化时间为字符串。
-
datetime.datetime
处理日期和时间的组合(最常用)。
- 属性:
year, month, day, hour, minute, second, microsecond, tzinfo
- 常用方法:
datetime.now(tz=None): 返回当前本地日期时间。
datetime.utcnow(): 返回当前 UTC 时间。
datetime.combine(date, time): 合并日期和时间对象。
datetime.strptime(string, format): 解析字符串为日期时间。
datetime.timestamp(): 转换为 Unix 时间戳(秒)。
datetime.date(): 提取日期部分。
datetime.time(): 提取时间部分。
datetime.strftime(format): 格式化输出。
-
datetime.timedelta
表示时间间隔(如天、秒、微秒)。
- 用途: 计算日期/时间的加减。
- 示例:
future = datetime.now() + timedelta(days=7) # 7天后
-
datetime.tzinfo(抽象类)
处理时区信息,需自定义实现。
替代方案: 使用标准库 datetime.timezone(Python 3.2+)或第三方库 pytz。
-
datetime.timezone
实现 tzinfo 的简单时区类。
- 示例:
tz = timezone(timedelta(hours=8)) # UTC+8 时区
dt = datetime(2023, 5, 15, tzinfo=tz)
datetime.date
处理日期(年、月、日)。
- 属性:
year,month,day - 常用方法:
date.today(): 返回当前本地日期。date.fromisoformat("YYYY-MM-DD"): 从字符串解析日期。date.replace(year, month, day): 替换日期部分。date.weekday(): 返回星期几(0=周一, 6=周日)。date.strftime(format): 格式化日期为字符串。
datetime.time
处理时间(时、分、秒、微秒)。
- 属性:
hour,minute,second,microsecond,tzinfo(时区) - 常用方法:
time.replace(hour, minute, second, microsecond): 替换时间部分。time.strftime(format): 格式化时间为字符串。
datetime.datetime
处理日期和时间的组合(最常用)。
- 属性:
year,month,day,hour,minute,second,microsecond,tzinfo - 常用方法:
datetime.now(tz=None): 返回当前本地日期时间。datetime.utcnow(): 返回当前 UTC 时间。datetime.combine(date, time): 合并日期和时间对象。datetime.strptime(string, format): 解析字符串为日期时间。datetime.timestamp(): 转换为 Unix 时间戳(秒)。datetime.date(): 提取日期部分。datetime.time(): 提取时间部分。datetime.strftime(format): 格式化输出。
datetime.timedelta
表示时间间隔(如天、秒、微秒)。
- 用途: 计算日期/时间的加减。
- 示例:
datetime.tzinfo(抽象类)
处理时区信息,需自定义实现。
替代方案: 使用标准库 datetime.timezone(Python 3.2+)或第三方库 pytz。
datetime.timezone
实现 tzinfo 的简单时区类。
from datetime import datetime
now = datetime.now() # 2023-05-15 14:30:45.123456
# 日期时间 → 字符串
s = now.strftime("%Y-%m-%d %H:%M:%S") # "2023-05-15 14:30:45"
# 字符串 → 日期时间
dt = datetime.strptime("2023-05-15", "%Y-%m-%d") # 时间部分默认为 00:00:00
from datetime import timedelta
# 加减时间
tomorrow = now + timedelta(days=1)
last_hour = now - timedelta(hours=1)
# 计算时间差
diff = tomorrow - now
print(diff.total_seconds()) # 86400.0 秒
from datetime import timezone, timedelta
# 创建 UTC+8 时区
tz_beijing = timezone(timedelta(hours=8))
dt_local = datetime(2023, 5, 15, 14, 30, tzinfo=tz_beijing)
# 转换为 UTC 时间
dt_utc = dt_local.astimezone(timezone.utc) # 2023-05-15 06:30:00+00:00
date_part = now.date() # 返回 date 对象
time_part = now.time() # 返回 time 对象
year = now.year # 2023
| 符号 | 含义 | 示例 |
|---|---|---|
%Y |
四位年份 | 2023 |
%m |
两位月份(01-12) | 05 |
%d |
两位日期(01-31) | 15 |
%H |
24小时制小时(00-23) | 14 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-59) | 45 |
%f |
微秒(000000-999999) | 123456 |
%A |
星期全名 | Monday |
%a |
星期缩写 | Mon |
%B |
月份全名 | May |
%b |
月份缩写 | May |
- 处理时区:
优先使用 timezone 或第三方库 pytz(支持 IANA 时区数据库)。
- 时间存储:
建议用 UTC 时间存储,显示时再转换为本地时间。
- 性能敏感场景:
考虑使用 time.monotonic() 或 time.perf_counter() 替代时间差计算。
优先使用
timezone 或第三方库 pytz(支持 IANA 时区数据库)。建议用 UTC 时间存储,显示时再转换为本地时间。
考虑使用
time.monotonic() 或 time.perf_counter() 替代时间差计算。
from datetime import datetime, timedelta, timezone
# 1. 获取当前时间(带时区)
now = datetime.now(timezone.utc)
# 2. 转换为北京时间 (UTC+8)
tz_beijing = timezone(timedelta(hours=8))
beijing_time = now.astimezone(tz_beijing)
# 3. 格式化输出
formatted = beijing_time.strftime("%Y-%m-%d %H:%M:%S %Z")
print(f"Beijing Time: {formatted}") # e.g., "2023-05-15 22:30:45 UTC+08:00"
# 4. 计算7天后的日期
future = beijing_time + timedelta(days=7)
# 5. 解析字符串时间
dt_parsed = datetime.strptime("2023-12-31", "%Y-%m-%d")
通过掌握 datetime 模块,你可以高效处理绝大多数日期时间相关任务!
到此这篇关于Python datetime模块详解的文章就介绍到这了,更多相关Python datetime模块内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python时间处理模块time和datetime详解
- Python中的time和datetime模块使用方法详解
- Python基本知识之datetime模块详解
- Python常用模块之datetime模块详解
- python使用datetime模块处理日期时间及常用功能详解
- python datetime模块详解
- python 常用日期处理– datetime 模块的使用
- python利用datetime模块计算程序运行时间问题
- Python Datetime模块和Calendar模块用法实例分析
- Python基于datetime或time模块分别获取当前时间戳的方法实例
- python中datetime模块中strftime/strptime函数的使用