当前位置: 首页 > ds >正文

Python datetime库的用法 Python从入门到入土系列第3篇-洞察标准库DateTime

Python datetime库详解及实践案例

datetime是Python处理日期时间的核心标准库,提供日期、时间、时间间隔和时区操作功能。本文将通过15个代码示例详细解析其核心用法。


一、模块结构解析

datetime库包含5个主要类:

  • datetime.date:处理日期(年、月、日)

  • datetime.time:处理时间(时、分、秒、微秒)

  • datetime.datetime:日期时间复合对象

  • datetime.timedelta:时间间隔

  • datetime.tzinfo:时区信息基类


二、date对象基础操作

1. 创建日期对象

from datetime import date# 创建指定日期
d = date(2023, 12, 25)
print(d)  # 2023-12-25# 获取当前日期
today = date.today()
print(f"Today: {today}")  # Today: 2023-08-20(当日日期)

2. 日期属性访问

print(f"Year: {d.year}")  # Year: 2023
print(f"Month: {d.month}")  # Month: 12
print(f"Day: {d.day}")  # Day: 25

三、time对象操作

3. 创建时间对象

from datetime import timet = time(14, 30, 45, 123456)
print(t)  # 14:30:45.123456print(f"Hour: {t.hour}")  # 14
print(f"Minute: {t.minute}")  # 30
print(f"Second: {t.second}")  # 45
print(f"Microsecond: {t.microsecond}")  # 123456

四、datetime复合对象

4. 创建日期时间

from datetime import datetime# 当前时间(本地)
now = datetime.now()
print(now)  # 2023-08-20 15:30:45.123456# 指定日期时间创建
dt = datetime(2023, 8, 20, 9, 30, 15)
print(dt)  # 2023-08-20 09:30:15

5. 时间戳转换

# 获取当前时间戳
timestamp = datetime.now().timestamp()
print(timestamp)  # 1692595845.123456# 时间戳转datetime
dt_from_ts = datetime.fromtimestamp(1692595845)
print(dt_from_ts)  # 2023-08-20 15:30:45

五、时间格式化与解析

6. 格式化输出(strftime)

dt = datetime(2023, 8, 20, 15, 30)
print(dt.strftime("%Y-%m-%d %H:%M:%S"))  # 2023-08-20 15:30:00
print(dt.strftime("%A, %d %B %Y"))  # Sunday, 20 August 2023

7. 字符串解析(strptime)

date_str = "2023-12-25 18:30"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M")
print(dt)  # 2023-12-25 18:30:00

六、时间间隔计算(timedelta)

8. 基础时间运算

from datetime import timedeltadt = datetime(2023, 8, 20)
delta = timedelta(days=7, hours=3)print(dt + delta)  # 2023-08-27 03:00:00
print(dt - delta)  # 2023-08-12 21:00:00

9. 日期差计算

date1 = date(2023, 8, 20)
date2 = date(2023, 9, 1)
delta = date2 - date1
print(delta.days)  # 12

七、时区处理(需pytz库)

10. 时区转换

import pytz
from datetime import datetime# 创建带时区的时间
utc_time = datetime.now(pytz.utc)
print(utc_time)  # 2023-08-20 07:30:45.123456+00:00# 转换时区
tz_shanghai = pytz.timezone('Asia/Shanghai')
local_time = utc_time.astimezone(tz_shanghai)
print(local_time)  # 2023-08-20 15:30:45.123456+08:00

八、综合实践案例

案例1:会议提醒系统

from datetime import datetime, timedelta# 设置会议时间
meeting_time = datetime(2023, 8, 25, 14, 0)
current_time = datetime.now()# 计算时间差
delta = meeting_time - current_timeif delta.days < 0:print("会议已结束")
else:hours = delta.seconds // 3600minutes = (delta.seconds % 3600) // 60print(f"距离会议还有 {delta.days} 天 {hours} 小时 {minutes} 分钟")

案例2:考勤时间计算

def calculate_working_hours(check_in, check_out):"""计算工作时长"""delta = check_out - check_inhours = delta.seconds // 3600minutes = (delta.seconds % 3600) // 60return f"{hours}小时{minutes}分钟"# 输入时间格式:HH:MM
check_in = datetime.strptime("09:15", "%H:%M")
check_out = datetime.strptime("18:30", "%H:%M")
print(calculate_working_hours(check_in, check_out))  # 9小时15分钟

九、常见格式符号速查表

符号说明示例
%Y四位年份2023
%m两位月份08
%d两位日期20
%H24小时制小时15
%I12小时制小时03
%M分钟30
%S45
%A完整星期名称Monday
%B完整月份名称August
%pAM/PM标识PM

通过以上15个示例,我们全面覆盖了datetime库的核心功能。实际开发中,结合具体需求灵活运用这些方法,可以高效处理各种日期时间相关业务场景。特别注意时区处理建议使用pytz库,确保时间计算的准确性。

http://www.xdnf.cn/news/3842.html

相关文章:

  • 【Spring】Spring中8种常见依赖注入使用示例
  • 健康养生新主张
  • web应用开发说明文档
  • matlab学习之旅
  • 数据结构---
  • 实战项目:基于控制台与数据库的图书管理系统开发指南
  • C语言中memmove和memcpy
  • 智慧校园整体解决方案-5PPT(65页)
  • python中的异常处理
  • 【CF】Day50——Codeforces Round 960 (Div. 2) BCD
  • 数学实验Matlab
  • 多把锁以及线程死锁问题
  • Linux-GRUB全面指南
  • CUDA输出“hello world”
  • 多数据源动态切换
  • 算法每日一题 | 入门-顺序结构-数字反转
  • (38)VTK C++开发示例 ---纹理裁剪
  • C++负载均衡远程调用学习之异步消息任务功能与连接属性
  • CVPR2021 | 重新思考视觉Transformer中的自注意力机制
  • Java学习手册:Spring 生态其他组件介绍
  • 单细胞测序试验设计赏析(一)
  • AWS在跨境电商中的全场景实践与未来生态构建
  • D. 例题3.2.2 整数划分问题
  • 二种MVCC对比分析
  • 学习黑客风险Risk
  • iOS启动优化:从原理到实践
  • 2025年渗透测试面试题总结-拷打题库35(题目+回答)
  • 【C++】:C++17新特性
  • Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录
  • 2845. 统计趣味子数组的数目