Python日期与Unix时间戳互转及格式转换详解

一只小鹿
一只小鹿
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析Python中利用datetime和time模块进行日期字符串与Unix时间戳相互转换的方法。涵盖常见格式如'%Y-%m-%d %H:%M:%S'与'%c'的处理,演示如何将标准时间字符串转为时间戳,以及将时间戳还原为可读字符串或不同格式的时间串,解决官方文档示例不足的问题。

Python日期与时间戳转换概述

官方文档的示例往往缺乏我们日常使用的标准日期格式,网络上许多博客提供的转换方法也仅能实现大致结果,且常混淆使用datetime和time两个模块。作者认为时间格式化不应如此繁琐,无需依赖两个模块协同工作,因此通过查阅源码总结出以下几种常用且高效的日期与时间戳转换方式。

核心操作主要涉及三个要素:时间字符串、格式定义以及Unix时间戳。通过这些要素,可以实现将一种时间字符串转换为另一种时间格式,或者将时间字符串转换为Unix时间戳,亦或将Unix时间戳转换回时间字符串。

在Python中,datetime和time这两个模块中的任意一个均能独立完成上述转换任务。

datetime与time模块转换示例

下文将分别列出基于这两个模块的具体实现示例。


# coding: utf-8
from datetime import datetime
import time

s = '2019-06-07 16:30:10'
f = '%Y-%m-%d %H:%M:%S'
s2 = 'Fri Jun 7 16:30:10 2019'
f2 = '%c'

// 时间字符串转时间戳, 时间字串 s和format 对应
// int(t) 转为整型
t = datetime.strptime(s, f).timestamp() # 1559856210.0
t2 = time.mktime(time.strptime(s, f)) # 1559856210.0
t3 = time.mktime(time.strptime(s2, f2)) # 1559856210.0
t4 = datetime.strptime(s2, f2).timestamp() # 1559856210.0
t5 = datetime.strptime('2019-06-07', '%Y-%m-%d').timestamp() # 1559836800.0
t6 = datetime.strptime('06/07/19', '%x').timestamp() # 1559836800.0 (06/07/2019, '%m/%d/%Y')
print(t, t2, t3, t4, t5, t6, "\n")

ut = 1559896210
# 时间戳转为时间字符串
d = datetime.fromtimestamp(ut) # 2019-06-07 16:30:10
d2 = time.strftime(f, time.localtime(ut)) # 2019-06-07 16:30:10
d3 = time.ctime(ut) # Fri Jun 7 16:30:10 2019
d4 = datetime.fromtimestamp(ut).ctime() # Fri Jun 7 16:30:10 2019
d5 = time.strftime('%Y-%m-%d', time.localtime(ut)) # 2019-06-07 (05:23:30, %H:%M:%S)
d6 = datetime.fromtimestamp(ut).date() # 2019-06-07
d7 = datetime.fromtimestamp(ut).time() # 16:30:10
d8 = time.strftime('%x', time.localtime(ut)) # 06/07/19
d9 = time.strftime('%X', time.localtime(ut)) # 16:30:10
dd = datetime.fromtimestamp(ut).strftime('%x') # 06/07/19 [(16:30:10, %X), (Fri Jun 7 16:30:10 2019, %c)]
print(d, d2, d3, d4, d5, d6, d7, d8, d9, dd, "\n")

# 格式转换
# 将 2019-06-07 16:30:10 转为 Fri Jun 7 16:30:10 2019
# (16:30:10, %X)
transf = datetime.strptime(s, f).strftime(f2)
# 将 Fri Jun 7 16:30:10 2019 转为 2019-06-07
# (2019-06-07 16:30:10, %Y-%m-%d %H:%M:%S)
transf2 = datetime.strptime(s2, f2).strftime('%Y-%m-%d')
# 将 2019-06-07 16:30:10 转为 Fri Jun 7 16:30:10 2019
# (2019-06-07 16:30:10, %Y-%m-%d %H:%M:%S)
transf3 = time.strftime('%c', time.strptime(s, f))
# 将 Fri Jun 7 16:30:10 2019 转为 2019-06-07 16:30:10
transf4 = time.strftime(f, time.strptime(s2, f2))
print(transf, transf2, transf3, transf4)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

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

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 算法库。