当前位置:首页 > 技术分析 > 正文内容

每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!

ruisui8821小时前技术分析7

在日常开发中,时间处理是绕不开的一块,比如:

  1. 生成时间戳
  2. 比较两个时间差
  3. 转换为可读格式
  4. 接口传参/前端展示/日志记录

今天我们就用一个案例 + 代码 + 思维导图,带你完全搞定 datetime 模块的用法



模块介绍

datetime 是 Python 标准库中专门用于处理日期和时间的模块,功能强大且易上手,核心组件:

  1. datetime: 日期 + 时间
  2. date: 只有日期
  3. time: 只有时间
  4. timedelta: 用于计算差值



快速上手示例

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime

now = datetime.now()
print(f"当前时间:{now}")



必会操作一网打尽


字符串 <-> datetime 互转

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime


# 字符串 -> datetime
dt = datetime.strptime("2025-04-17 10:21:34", "%Y-%m-%d %H:%M:%S")

# datetime -> 字符串
str_time = dt.strftime("%Y年%m月%d日 %H:%M:%S")
print(f"字符串 -> datetime:{dt}")
print(f"datetime -> 字符串:{str_time}")



加减时间差(timedelta)

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime, timedelta

now = datetime.now()
three_days_later = now + timedelta(days=3)
yesterday = now - timedelta(days=1)
print(f"3天后:{three_days_later}")
print(f"昨天:{yesterday}")




比较两个时间差

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime, timedelta

dt1 = datetime(2025, 4, 17, 10, 0, 0)
dt2 = datetime(2025, 4, 17, 12, 30, 0)
diff = dt2 - dt1

print(f"时差(h):{diff}")
print(f"时差(s):{diff.total_seconds()}")




时间戳 <-> datetime 互转(重点!)


1 datetime → 时间戳

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime, timedelta

now = datetime.now()
ts = now.timestamp()
print(f"时间:{now}")
print(f"时间戳:{ts}")

2 时间戳 → datetime

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime, timedelta

ts = 1713339784.123456
now = datetime.fromtimestamp(ts)
print(f"时间戳:{ts}")
print(f"时间:{now}")


3 时间戳 → 字符串

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime, timedelta

ts = 1713339784.123456
now = datetime.fromtimestamp(ts)
str_now = datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S")
print(f"时间戳:{ts}")
print(f"时间:{now},类型{type(now)}")
print(f"字符串:{str_now},类型{type(str_now)}")


4 字符串 → 时间戳

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime

str_now = "2025-04-17 10:23:04"
dt = datetime.strptime(str_now, "%Y-%m-%d %H:%M:%S")
print(f"字符串:{str_now},类型{type(str_now)}")
print(f"时间戳:{dt.timestamp()}")



思维导图:时间格式转换大全


建议收藏这张思维图,实用性爆棚!



拓展小技巧(提高效率)


格式化为日期(不带时分秒):

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime

print(f"格式化为日期(不带时分秒):{datetime.now().date()}")


获取星期几(0=周一):

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime

print(f"获取星期几(0=周一):{datetime.now().weekday()}")


获取 ISO 格式时间:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish 
@File    :D9.py
@Date    :2025/4/18 09:51 
@Author : malijie
"""
from datetime import datetime

print(f"获取 ISO 格式时间:{datetime.now().isoformat()}")



小结

操作

方法名

当前时间

datetime.now()

字符串 → 时间

strptime()

时间 → 字符串

strftime()

加减时间

timedelta

转时间戳

timestamp()

时间戳转时间

fromtimestamp()



实战建议

建议封装成一个工具类,方便随时调用

接口传参时统一用时间戳,展示时再格式化

与 pandas 配合时超强大(后续专讲)



下期预告:每天一个 Python 库:json 模块超实用技巧,数据处理一把梭!


关注不迷路,不错过每一期实战技巧!后续还有更多自动化测试经验分享~评论区欢迎唠嗑交流!


点头像,发现更多精彩内容!


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3988.html

分享给朋友:

“每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!” 的相关文章

微软的Linux发行版终于加入了对XFS根文件系统的支持

当许多Linux发行版在评估新的根文件系统选项或甚至像OpenZFS这样的特性,微软内部Linux发行版到本月才开始支持XFS作为根文件系统选项。随着这个月对微软内部Linux发行版CBL-Mariner的更新,他们现在支持XFS作为根文件系统。到目前为止,这个用于微软内部各种目的的Linux发行版...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...

学前端,这30个CSS选择器,你必须熟记

你学会了基本的id,class类选择器和descendant后代选择器,然后就觉得完事了吗?如果这样,你就会错过许多灵活运用CSS的机会。虽然本文提到的许多选择器都属于CSS3,并且只能在现代的浏览器中使用,但学会这些是大有好处的。什么是CSS选择器呢?每一条css样式定义由两部分组成,形式如下:[...

vue中router常见的三种传参方式

目录:我们在使用vue开发的过程中使用router跳转的时候肯定会遇到传参的情况;一般情况就三种传参是最常见的;那我们就来看看都有那几种传参方式吧!第一种:{ path: '/mall:id', name: 'Mall', component:...

vue2中路由的使用步骤,你学会了吗?

今天我们来整理下关于vue2中路由的使用步骤:1. 导入 vue 文件和Vue-router文件(注意:vue-router是依赖vue运行的,所以一定在vue后引入vue-router)2. 定义路由组件模板3. 创建路由实例并定义路由规则4. 将路由实例挂载给Vue实例5. 在结构区域定义控制路...