0

0

Python中将特定格式日期时间字符串转换为Unix时间戳的指南

花韻仙語

花韻仙語

发布时间:2025-11-28 13:08:36

|

818人浏览过

|

来源于php中文网

原创

Python中将特定格式日期时间字符串转换为Unix时间戳的指南

本教程详细讲解如何在python中将特定格式的日期时间字符串(如 "thu, 04 jan 2024 18:25:01 +0000")转换为unix时间戳。我们将利用 `datetime` 模块的 `strptime` 方法解析字符串,并使用 `timestamp` 方法获取精确到微秒的unix时间戳,同时涵盖时区处理和常见注意事项。

在数据处理和系统集成中,将不同格式的日期时间字符串转换为统一的Unix时间戳是常见的需求。Python的 datetime 模块提供了强大而灵活的工具来完成这项任务。本教程将指导您如何使用 datetime.strptime() 解析特定格式的日期时间字符串,并通过 datetime 对象的 timestamp() 方法获取对应的Unix时间戳。

核心概念:Python datetime 模块

datetime 模块是Python标准库中用于处理日期和时间的模块。它提供了 datetime 对象,可以表示日期和时间,并支持多种操作,包括格式化、解析、算术运算以及时区处理。

步骤一:解析日期时间字符串 (datetime.strptime)

要将日期时间字符串转换为 datetime 对象,我们需要使用 datetime.strptime() 方法。这个方法接收两个参数:待解析的日期时间字符串和描述该字符串格式的格式代码字符串。

例如,对于字符串 "Thu, 04 Jan 2024 18:25:01 +0000",我们需要构建一个精确匹配其结构的格式代码。

立即学习Python免费学习笔记(深入)”;

常用格式代码说明:

  • %a: 星期几的缩写(如 Thu)
  • %d: 月份中的第几天,十进制数(如 04)
  • %b: 月份的缩写(如 Jan)
  • %Y: 带世纪的年份,十进制数(如 2024)
  • %H: 24小时制的小时数,十进制数(如 18)
  • %M: 分钟数,十进制数(如 25)
  • %S: 秒数,十进制数(如 01)
  • %z: UTC偏移量,格式为 +HHMM 或 -HHMM(如 +0000)。这是处理时区的关键。

因此,对于 "Thu, 04 Jan 2024 18:25:01 +0000",对应的格式代码字符串为 "%a, %d %b %Y %H:%M:%S %z"。

示例代码:

from datetime import datetime

date_string = "Thu, 04 Jan 2024 18:25:01 +0000"
format_code = "%a, %d %b %Y %H:%M:%S %z"

# 使用 strptime 解析字符串为 datetime 对象
dt_object = datetime.strptime(date_string, format_code)
print(f"解析后的 datetime 对象: {dt_object}")
# 输出: 解析后的 datetime 对象: 2024-01-04 18:25:01+00:00

可以看到,strptime 成功地将字符串转换为了一个带有UTC偏移量(+00:00)的 datetime 对象。

Napkin AI
Napkin AI

Napkin AI 可以将您的文本转换为图表、流程图、信息图、思维导图视觉效果,以便快速有效地分享您的想法。

下载

步骤二:获取Unix时间戳 (datetime.timestamp)

一旦我们有了 datetime 对象,就可以使用其 timestamp() 方法来获取对应的Unix时间戳。Unix时间戳是从UTC时间1970年1月1日00:00:00(即Unix纪元)开始到指定日期时间所经过的秒数。

timestamp() 方法返回一个浮点数,精确到微秒。

示例代码:

from datetime import datetime

date_string = "Thu, 04 Jan 2024 18:25:01 +0000"
format_code = "%a, %d %b %Y %H:%M:%S %z"

# 1. 解析字符串为 datetime 对象
dt_object = datetime.strptime(date_string, format_code)

# 2. 获取 Unix 时间戳
unix_timestamp = dt_object.timestamp()
print(f"Unix 时间戳: {unix_timestamp} 秒")
# 输出: Unix 时间戳: 1704392701.0 秒

您也可以直接获取当前时间的Unix时间戳:

from datetime import datetime

current_dt = datetime.now()
current_unix_timestamp = current_dt.timestamp()
print(f"当前时间的 Unix 时间戳: {current_unix_timestamp} 秒")
# 输出示例: 当前时间的 Unix 时间戳: 1704394088.831857 秒

完整示例代码

将上述步骤整合,实现日期时间字符串到Unix时间戳的完整转换:

from datetime import datetime

def convert_datetime_string_to_unix_timestamp(date_str: str, date_format: str) -> float:
    """
    将特定格式的日期时间字符串转换为Unix时间戳。

    Args:
        date_str (str): 待转换的日期时间字符串。
        date_format (str): 描述 date_str 格式的字符串(例如:"%a, %d %b %Y %H:%M:%S %z")。

    Returns:
        float: 对应的Unix时间戳(自Unix纪元以来的秒数),精确到微秒。

    Raises:
        ValueError: 如果日期时间字符串与提供的格式不匹配。
    """
    try:
        # 1. 使用 strptime 解析字符串为 datetime 对象
        dt_object = datetime.strptime(date_str, date_format)

        # 2. 使用 timestamp() 方法获取 Unix 时间戳
        unix_timestamp = dt_object.timestamp()

        return unix_timestamp
    except ValueError as e:
        print(f"错误:无法解析日期时间字符串 '{date_str}',请检查格式 '{date_format}'。详情:{e}")
        raise

# 示例用法
input_date_string = "Thu, 04 Jan 2024 18:25:01 +0000"
input_format = "%a, %d %b %Y %H:%M:%S %z"

try:
    result_timestamp = convert_datetime_string_to_unix_timestamp(input_date_string, input_format)
    print(f"原始日期时间字符串: '{input_date_string}'")
    print(f"转换后的Unix时间戳: {result_timestamp}")
except ValueError:
    pass

# 另一个示例:当前时间
print(f"\n当前Unix时间戳: {datetime.now().timestamp()}")

注意事项

  1. 格式代码的准确性: strptime() 方法对格式代码非常严格。如果字符串与提供的格式代码不完全匹配,将会抛出 ValueError。务必仔细检查日期时间字符串的每个部分,并选择正确的格式代码。
  2. 时区处理: datetime 对象可以包含时区信息。如果您的日期时间字符串包含时区偏移量(如 +0000),请务必在格式代码中使用 %z。timestamp() 方法会将带时区信息的 datetime 对象转换为UTC时间(Unix纪元是基于UTC的),然后计算时间戳。
  3. 精度: timestamp() 返回的是浮点数,可以精确到微秒。如果您只需要整数秒,可以对其进行类型转换或取整。
  4. 错误处理: 在实际应用中,建议使用 try-except 块来捕获 ValueError,以优雅地处理格式不匹配的输入。

拓展:将Unix时间戳转换回 datetime 对象

有时,您可能需要将Unix时间戳转换回 datetime 对象。datetime 模块也提供了相应的方法:datetime.fromtimestamp()(本地时区)和 datetime.utcfromtimestamp()(UTC时区)。

from datetime import datetime

# 假设我们有一个Unix时间戳
unix_ts = 1704392701.0

# 转换为本地时区的 datetime 对象
dt_local = datetime.fromtimestamp(unix_ts)
print(f"从Unix时间戳转换到本地时间: {dt_local}")
# 输出示例: 从Unix时间戳转换到本地时间: 2024-01-04 18:25:01

# 转换为UTC时区的 datetime 对象 (注意:utcfromtimestamp 在 Python 3.12+ 中已弃用,
# 推荐使用 datetime.fromtimestamp(unix_ts, tz=timezone.utc))
dt_utc = datetime.utcfromtimestamp(unix_ts) # 对于旧版本Python仍可用
print(f"从Unix时间戳转换到UTC时间 (旧方法): {dt_utc}")
# 输出: 从Unix时间戳转换到UTC时间 (旧方法): 2024-01-04 18:25:01

# Python 3.12+ 推荐的 UTC 转换方式
from datetime import timezone
dt_utc_new = datetime.fromtimestamp(unix_ts, tz=timezone.utc)
print(f"从Unix时间戳转换到UTC时间 (新方法): {dt_utc_new}")
# 输出: 从Unix时间戳转换到UTC时间 (新方法): 2024-01-04 18:25:01+00:00

总结

通过本教程,您应该已经掌握了在Python中将特定格式的日期时间字符串转换为Unix时间戳的方法。关键在于正确使用 datetime.strptime() 方法解析字符串,并提供准确的格式代码,然后通过 datetime 对象的 timestamp() 方法获取Unix时间戳。理解格式代码、时区处理以及错误处理是确保转换成功和代码健壮性的重要因素。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1570

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1205

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

193

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

131

2025.08.07

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号