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

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库,确保时间计算的准确性。

相关文章:

  • 第九章:反击的序曲(续)
  • 优化01-统计信息
  • Space Engineers 太空工程师 [DLC 解锁] [Steam] [Windows]
  • 生成器模式(Builder Pattern)
  • C++ 单例模式详解
  • 智能决策支持系统的基本概念与理论体系
  • api补充
  • 互联网大厂Java面试:从Spring到微服务的技术探讨
  • 在pycharm profession 2020.3上离线安装.whl类型的包(以PySimpleGUI为例)
  • Socket-TCP
  • 中间件和组件
  • n8n工作流自动化平台的实操:本地化高级部署
  • Python的简单练习
  • Python硬核革命:从微控制器到FPGA的深度开发指南
  • 降维大合集
  • 前端面经-VUE3篇(二)--vue3组件知识(一)组件注册、props 与 emits、透传、插槽(Slot)
  • LeetCode240. 搜索二维矩阵 II(巧妙转换)
  • Leetcode刷题记录29——矩阵置零
  • 高维亚空间超频物质变压缩技术 第27次CCF-CSP计算机软件能力认证
  • 力扣:24两两交换链表的节点
  • 巴称击落多架印度“阵风”战机,专家:小规模冲突巴空军战力不落下风
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现今年5%左右增长目标
  • 《蓦然回首》:现代动画的践行与寓言
  • 金沙记忆|元谋龙街渡:是起点也是终点
  • 山东滕州一车辆撞向公交站台致多人倒地,肇事者被控制,案件已移交刑警
  • 中年人多活动有助预防阿尔茨海默病