百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

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

liuian 2025-08-31 03:57 5 浏览

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

  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 模块超实用技巧,数据处理一把梭!


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


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


相关推荐

Html中Css样式Ⅱ_html+css+

元素的定位(方式五种定位方式):静态定位:position:static;相对定位:position:relative;绝对定位:position:absolute;固定定位:position...

HTML 标签和属性值的基本格式_html标签及属性的语法规则

HTML:HyperTextMarkupLanguage超文本标记语言HTML代码不区分大小写,包括HTML标记、属性、属性值都不区分大小写;任何空格或回车键在代码中都无效,插入空格或回车有...

基于Visual Studio C#语言开发上位机,做定制设计后有多好看

...

C#中使用Halcon开发视觉检测程序教程

一、环境准备1.安装Halcon从Halcon官方网站下载适合你操作系统的安装包,按照安装向导完成安装。安装过程中,记住安装路径,后续配置环境时会用到。2.配置VisualStudio项目打开V...

【开源】C#功能强大,灵活的跨平台开发框架 - Uno Platform

前言今天给广大网友分享一个基于C#开源、功能强大、灵活的跨平台开发框架,她就是:UnoPlatform。通过UnoPlatform,开发者可以利用单一代码库实现多平台兼容,极大地提高了开发效率和...

C# 的发展简史_c#的发展前景

1.C#的诞生和初期(2000-2005)2000年:在微软的PDC大会上,由AndersHejlsberg首次公开展示了C#语言。2002年:微软发布了.NETFramework1.0,其...

Visual Studio 2010-C#跟西门子1200(Sharp7)窗体控制②-启动按钮

VisualStudio2010--C#跟西门子1200(Sharp7)窗体控制②--启动按钮上期回顾(上期主要是新建窗体应用程序,添加sharp7的类库并引用,建立一个button按钮):本期将...

Visual Studio窗口布局混乱后的恢复与优化指南

在使用VisualStudio进行开发时,我们常因误操作(如拖拽窗口、关闭面板、多显示器切换)导致界面布局混乱,代码编辑器、解决方案资源管理器、属性面板等组件“错位”,严重影响开发效率。本文将针对布...

使用Visual Studio 2017为AutoCAD创建一个c#模板

本教程的目标是展示如何在VisualStudio2017中创建AutoCAD的c#项目模板,该模板允许在调试模式下从VisualStudio加载DLL来自动启动AutoCAD。本文展示的示例使用...

IT科技-续3Visual Studio2019-C#实战练习

上次完成了登录页面的窗体设计,本次完成管理界面的设计。第一步ComBox控制深度操作点击编辑选项,加入预定选项,完成操作。第二步复制Buttons控件依次为保存、删除、重置、编辑按钮属性设置,参考...

如何在 C# 中将文本转换为 Word 以及将 Word 转换为文本

在现代软件开发中,处理文档内容是一个非常常见的需求。无论是生成报告、存储日志,还是处理用户输入,开发者都可能需要在纯文本与Word文档之间进行转换。有时需要将文本转换为Word,以便生成结构化的...

简短的C#入门教程 # C# 入门教程 C#(读作...

简短的C#入门教程#C#入门教程C#(读作CSharp)是一种由Microsoft开发的多范式编程语言,它具有广泛的应用,特别是在Windows平台上。本教程将介绍C#的基础知识,以帮助您入门这...

JavaScript中this指向各种场景_前端中this的指向

在JavaScript中,this的指向是一个核心概念,其值取决于函数的调用方式,而非定义位置(箭头函数除外)。以下是this指向的常见场景及具体说明:1.全局作用域中的this在全局作用域(非...

微信WeUI设计规范文件下载及使用方法

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信Web开发量身设计,可以令用户的使用感知...

JavaScript技术:如何动态添加事件?

随着前端技术的不断发展,JavaScript已经成为了不可或缺的一部分,它可以让网页变得更加流畅和美观。但是,在JavaScript中动态添加事件还是一个比较困难的问题,为此,本文将从入门到精通,介绍...