Python 的时间处理模块 datetime 详解
💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。
🔍 博客内容包括:
- Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。
- 大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相关技术。
- 开发工具:分享常用开发工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升开发效率。
- 数据库与优化:总结MySQL及其他常用数据库技术,解决实际工作中的数据库问题。
- Python与大数据:专注于Python编程语言的深度学习,数据分析工具(如Pandas、NumPy)和大数据处理技术,帮助您掌握数据分析、数据挖掘、机器学习等技术。
- 数据结构与算法:总结数据结构与算法的核心知识,提升编程思维,帮助您应对大厂面试挑战。
🌟 我的目标:持续学习与总结,分享技术心得与解决方案,和您一起探索技术的无限可能!在这里,我希望能与您共同进步,互相激励,成为更好的自己。
📣 欢迎订阅本专栏,与我一起在这个知识的海洋中不断学习、分享和成长!💻🚀
📍版权声明:本博客所有内容均为原创,遵循CC 4.0 BY-SA协议,转载请注明出处。
目录
1. 模块简介
2. datetime 模块的主要类
2.1 datetime.date
2.2 datetime.time
2.3 datetime.datetime
2.4 datetime.timedelta
2.5 datetime.tzinfo
3. 日期与时间的获取和格式化
3.1 获取当前日期和时间
3.2 日期与时间的格式化
4. 日期与时间的运算
4.1 日期加减运算
4.2 时间差计算
5. 时间与其他格式的转换
5.1 时间戳与 datetime 的转换
5.2 字符串与 datetime 的转换
6. 时区处理
6.1 设置时区
6.2 时区转换
1. 模块简介
datetime
模块是 Python 中用于处理日期和时间的标准库,它提供了日期和时间的获取、格式化、解析、运算等功能,是开发者进行时间处理的常用工具。
2. datetime
模块的主要类
2.1 datetime.date
用于表示日期,包含年、月、日。
常用方法和属性:
from datetime import date
# 获取今天的日期
today = date.today()
print(today) # 输出:2025-01-16
# 创建一个日期对象
d = date(2023, 5, 20)
print(d.year, d.month, d.day) # 输出:2023 5 20
2.2 datetime.time
用于表示一天中的时间,包含时、分、秒和微秒。
常用方法和属性:
from datetime import time
# 创建时间对象
t = time(14, 30, 45)
print(t.hour, t.minute, t.second) # 输出:14 30 45
2.3 datetime.datetime
表示日期和时间,包含年、月、日、时、分、秒、微秒。
常用方法和属性:
from datetime import datetime
# 获取当前日期时间
now = datetime.now()
print(now) # 输出:2025-01-16 14:30:45.123456
# 创建一个日期时间对象
dt = datetime(2024, 12, 31, 23, 59, 59)
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
2.4 datetime.timedelta
表示时间间隔,用于日期和时间的加减运算。
常用方法和属性:
from datetime import timedelta
# 创建时间间隔
delta = timedelta(days=5, hours=3)
print(delta) # 输出:5 days, 3:00:00
2.5 datetime.tzinfo
用于处理时区信息。
示例:
from datetime import timezone, timedelta
# 创建一个时区对象
tz = timezone(timedelta(hours=8)) # 东八区
print(tz) # 输出:UTC+08:00
3. 日期与时间的获取和格式化
3.1 获取当前日期和时间
from datetime import datetime
# 获取当前日期时间
now = datetime.now()
print(now) # 输出:2025-01-16 14:30:45.123456
# 获取当前日期
today = datetime.today()
print(today.date()) # 输出:2025-01-16
3.2 日期与时间的格式化
strftime
格式化:
now = datetime.now()
formatted = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted) # 输出:2025-01-16 14:30:45
strptime
解析:
from datetime import datetime
date_str = '2025-01-16 14:30:45'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
print(parsed_date) # 输出:2025-01-16 14:30:45
4. 日期与时间的运算
4.1 日期加减运算
from datetime import datetime, timedelta
now = datetime.now()
# 日期加5天
future = now + timedelta(days=5)
print(future)
# 日期减5天
past = now - timedelta(days=5)
print(past)
4.2 时间差计算
from datetime import datetime
date1 = datetime(2025, 1, 16, 14, 30)
date2 = datetime(2025, 1, 10, 12, 0)
# 计算时间差
delta = date1 - date2
print(delta.days) # 输出:6
print(delta.total_seconds()) # 输出:540000
5. 时间与其他格式的转换
5.1 时间戳与 datetime
的转换
from datetime import datetime
# 时间戳转 datetime
timestamp = 1673798600
dt = datetime.fromtimestamp(timestamp)
print(dt) # 输出:2023-01-16 14:30:00
# datetime 转时间戳
now = datetime.now()
print(now.timestamp())
5.2 字符串与 datetime
的转换
见第 3.2 节。
6. 时区处理
6.1 设置时区
from datetime import datetime, timezone, timedelta
# 设置 UTC 时间
utc = datetime.now(timezone.utc)
print(utc) # 输出:2025-01-16 06:30:45+00:00
# 设置特定时区
tz = timezone(timedelta(hours=8)) # 东八区
beijing_time = utc.astimezone(tz)
print(beijing_time) # 输出:2025-01-16 14:30:45+08:00
6.2 时区转换
from datetime import datetime, timezone, timedelta
utc = datetime(2025, 1, 16, 6, 30, tzinfo=timezone.utc)
tz_ny = timezone(timedelta(hours=-5)) # 纽约时间
ny_time = utc.astimezone(tz_ny)
print(ny_time) # 输出:2025-01-16 01:30:00-05:00