Python时间处理实战:获取与转换时间戳、日期及结构体

Mason
Mason
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍Python中处理时间的核心方法。涵盖使用time模块获取秒级、毫秒级及微秒级时间戳,利用datetime进行日期格式化,以及实现时间字符串与时间戳的双向转换。此外,还解析了如何将时间转换为struct_time结构体,适用于各类开发场景。

获取秒级、毫秒级与微秒级时间戳

在Python开发中,获取不同精度的时间戳是常见需求。通过time模块的time()函数可获取原始浮点型时间数据,利用int()转换为秒级时间戳(10位整数),通过round(t * 1000)并取整得到毫秒级时间戳(13位整数),而round(t * 1000000)则用于获取微秒级时间戳(16位整数)。


import time
import datetime
t = time.time()
print (t)            #原始时间数据
print (int(t))         #秒级时间戳
print (int(round(t * 1000)))  #毫秒级时间戳
print (int(round(t * 1000000))) #微秒级时间戳

执行上述代码后,控制台将输出对应的原始时间数据、秒级、毫秒级及微秒级时间戳数值,例如原始数据为1499825149.257892时,秒级为1499825149,毫秒级为1499825149257,微秒级为1499825149257892。


1499825149.257892  #原始时间数据
1499825149      #秒级时间戳,10位
1499825149257    #毫秒级时间戳,13位
1499825149257892   #微秒级时间戳,16位

获取当前日期时间字符串

若需获取当前系统的日期和时间字符串,可使用datetime模块的now()方法结合strftime()函数。通过指定格式字符串如'%Y-%m-%d %H:%M:%S'可获取标准日期时间格式,若需包含微秒信息,可使用'%Y-%m-%d %H:%M:%S.%f'格式。


dt  = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
dt_ms = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') # 含微秒的日期时间,来源 比特量化
print(dt)
print(dt_ms)

运行示例代码后,将输出类似'2018-09-06 21:54:46'的标准日期时间字符串,以及包含微秒信息的完整时间字符串如'2018-09-06 21:54:46.205213'。


2018-09-06 21:54:46
2018-09-06 21:54:46.205213

日期字符串转秒级时间戳

将特定格式的日期字符串转换为秒级时间戳时,需先使用time.strptime()将字符串解析为时间元组,再通过time.mktime()将其转换为时间戳,最后用int()取整。此过程适用于已知格式如'%Y-%m-%d %H:%M:%S'的日期字符串。


dt = '2018-01-01 10:40:30'
ts = int(time.mktime(time.strptime(dt, "%Y-%m-%d %H:%M:%S")))
print (ts)

以'2018-01-01 10:40:30'为例,转换后的秒级时间戳结果为1514774430,该数值可直接用于后续的时间计算或存储。


1514774430

秒级时间戳转日期字符串

将秒级时间戳还原为可读的日期时间字符串,需使用time.localtime()将时间戳转换为本地时间元组,再通过time.strftime()指定格式进行格式化输出。此方法适用于将存储的时间戳展示给用户。


ts = 1515774430
dt = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts))
print(dt)

当输入时间戳为1515774430时,转换后的日期时间字符串显示为'2018-01-13 00:27:10',确保了时间信息的准确还原。


2018-01-13 00:27:10

不同时间格式间的转换

在不同时间格式之间进行转换时,可先使用datetime.strptime()将源字符串解析为datetime对象,再使用strftime()输出为目标格式。例如,将'08/02/2019 01:00'转换为标准日期格式。


dt = '08/02/2019 01:00'
dt_new = datetime.datetime.strptime(dt, '%m/%d/%Y %H:%M').strftime('%Y-%m-%d %H:%M:%S')
print(dt_new)

执行格式转换后,源时间字符串'08/02/2019 01:00'将被转换为'2019-08-02 01:00:00',实现了格式的统一与标准化。


2019-08-02 01:00:00

时间数据转换为struct_time结构体

Python中可通过time.strptime()将日期时间字符串转换为struct_time结构体,或通过time.localtime()将时间戳(需为int类型)转换为结构体。这两种方式常用于需要访问时间各组成部分(如年、月、日、时等)的场景。


ta_dt = time.strptime("2018-09-06 21:54:46", '%Y-%m-%d %H:%M:%S') #日期时间转结构体 
ta_ms = time.localtime(1486188476) #时间戳转结构体,注意时间戳要求为int,来源 比特量化
print(ta_dt)
print(ta_ms)

转换示例中,日期字符串'2018-09-06 21:54:46'转换为结构体后显示tm_year=2018, tm_mon=9等详细信息;时间戳1486188476转换后的结构体显示tm_year=2017, tm_mon=2等对应值,注意时间戳必须为整数类型。


time.struct_time(tm_year=2018, tm_mon=9, tm_mday=6, tm_hour=21, tm_min=54, tm_sec=46, tm_wday=3, tm_yday=249, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)

以上介绍了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 算法库。