Python datetime与time模块详解:时间处理、转换与时间戳实战

Miles
Miles
发布时间:2026-10-16| 5人浏览过
原创

本文深入解析Python中datetime和time两大核心时间模块。详细讲解如何获取当前时间、计算时间间隔、进行时间对象与字符串的双向转换,以及时间戳(timestamp)的获取与转换方法。同时对比datetime与time的应用场景,涵盖strftime、strptime等常用函数的具体用法与注意事项,帮助开发者高效处理各类时间相关任务。

在Python开发中,时间处理是常见需求,主要依赖datetime和time两个标准库模块。

datetime模块

  • datetime模块集成了日期(date)和时间(time)的功能,提供了处理日期和时间的高级数据类型。
  • 该模块支持获取当前系统时间。
  • 支持计算两个时间点之间的时间间隔。
  • 支持将datetime对象格式化为指定的时间字符串。
  • 支持将符合特定格式的时间字符串解析为datetime对象。

导入datetime模块主要有两种方式:一是导入整个datetime模块,二是直接导入datetime类。

from datetime import datetime

import datetime

获取当前时间

具体调用方法如下所示。

datetime.now()   # 导入模块后调用方法
datetime.datetime.now  # 直接导入包后调用方法

需要注意的是,该操作返回的是一个datetime类的实例化对象,而非字符串或时间戳。

获取时间间隔

单独获取时间间隔在实际应用中较少见,通常需要结合当前时间计算差值。

具体实现方法如下。

from datetime import datetime
from datetime import timedelta  # timedelta是一个函数

timeobj = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, week=0)
# 后面的参数分别代表天,秒,毫秒,微秒,分钟,小时,周;对应的值传入整型
# 返回的是一个间隔时间段的对象,一个类的实例化对象

示例代码展示了如何创建时间间隔对象。

例如,计算并获取前一时刻的时间点。

时间对象转换为时间字符串

前文提到的当前时间和时间间隔均返回对象,而对象无法直接通过网络传输或存储,因此需要将其转换为字符串格式。

转换方法如下。

时间对象.strftime(format)
# format为想要转成的格式,例如format为'%Y-%m-%d'时,会转换成‘年-月-日'格式

示例展示了如何将datetime对象格式化为字符串。

时间字符串转换为时间对象

字符串类型无法直接进行数学加减运算,若需对时间进行计算,必须先将字符串转换为时间对象。

转换方法如下。

from datetime import datetime

str_date = '2022-08-08 11:06:06'
date_obj = datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')
# datetime.striptime()返回的是个时间对象

示例展示了字符串解析为datetime对象的过程。

注意:strptime(str, '%Y-%m-%d %H:%M:%S')左侧字符串的格式必须与右侧参数中的格式定义完全一致,否则程序将抛出异常。

扩展:时间格式字符说明

除了上述常用的%Y %m %d %H %M %S占位符外,代表年、月、日、时、分、秒的字符外,Python还支持其他不常用的时间格式字符。

字符描述
%I一天中的第几个小时(12小时制,01~12),%H是24小时制
%f毫秒
%a简化的星期,如星期三Wed
%A完整的星期,如星期三Wednesday
%b简化的月份,如二月Feb
%B完整的月份,如二月February
%c本地日期和时间,如Wed Feb 5 10:14:28 2022
%p显示的上午还是下午,AM/PM
%j一年中的第几天
%U一年中的星期数
  

时间戳(timestamp)处理

什么是时间戳?

时间戳是指从1970年1月1日00时00分00秒(Unix纪元)至今所经过的总毫秒数或秒数。

在Python中,时间戳通常表示为float浮点类型。

将datetime对象转换为时间戳的方法如下。

具体调用方式见下文。

from datetime import datetime

datetime.timestamp(datetime.now())  # 返回当前时间戳

将时间戳转换回时间对象的方法如下。

具体调用方式见下文。

from datetime import datetime
datetime.fromtimestamp(timestamp)  # 返回时间对象

示例展示了时间戳与datetime对象之间的相互转换过程。

time模块

获取当前时间戳

具体方法如下。

import time
time.time()
# 返回秒级别的时间戳(浮点类型)
# 如果想获取毫秒级别的时间戳,只需要用秒级时间戳*1000即可

获取本地时间

具体方法如下。

import time
time.localtime(timestamp)
# 传入一个时间戳,也可以不传,如果不传会默认当前时间
# 返回一个对象(time.struct_time),对象的属性有时间信息

time.localtime()返回的对象属性中包含了年月日时分秒等详细信息。

属性描述取值范围
tm_year四位数年2020
tm_mon月1~12
tm_mday日1~31
tm_hour时0~23
tm_min分0~59
tm_sec秒0~61
tm_wday一周的第几天0~6(0是周一)
tm_yday一年的第几日1~366
tm_isdst夏时令-1,0,1是否时夏时令

暂停函数sleep的使用

用法如下所示。

import time
time.sleep(second)  # 传入希望暂停的秒数

time模块中的strftime和strptime函数

strftime函数的使用方法如下。

import time

time.strftime(format, t)
# format--格式化时间标准; t--time.localtime()返回的时间对象

strptime函数的使用方法如下。

import time

time.strptime(time_str, format)
# time_str--时间格式的字符串; format--与time_str一致的格式化时间标准

思考:既然datetime和time功能相似,为何需要保留两个独立的模块?

解答:在实际工作场景中,datetime模块更常用于处理具体的日期逻辑,而time模块则更多用于处理底层的时间操作或获取时间戳。

至此,关于Python中时间处理模块的介绍已完成。如需了解更多Python时间处理相关内容,建议查阅本站历史文章或继续浏览后续教程,感谢大家的支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。