讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Python 中将 ISO 8601 时间戳转换为日期并计算日期差值

云敏姑娘_2561

云敏姑娘_2561

发布时间:2026-01-01 16:10:28

|

643人浏览过

|

来源于php中文网

原创

如何在 Python 中将 ISO 8601 时间戳转换为日期并计算日期差值

本文详解如何使用 pandas 的 `to_datetime()` 将含时区的 iso 格式字符串(如 `'2024-02-06t00:00:00.000z'`)安全转换为 datetime 类型,并准确计算两列日期间的天数差,避免 `typeerror: unsupported operand type(s) for -: 'str' and 'str'`。

在处理真实业务数据(如 API 返回、日志或数据库导出)时,时间字段常以 ISO 8601 标准格式存储,例如 '2024-02-06T00:00:00.000Z'。该格式虽人类可读,但在 pandas 中默认被识别为字符串(object 类型),无法直接参与算术运算——这也是你遇到 TypeError: unsupported operand type(s) for -: 'str' and 'str' 的根本原因。

正确做法是:先统一转换为 datetime64[ns, UTC] 类型,再执行减法,最后用 .dt.days 提取整数天数差。pd.to_datetime() 是最健壮的解决方案,它能自动识别 Z(表示 UTC 时区)、毫秒精度及 ISO 格式,无需手动指定 format 参数(除非性能极端敏感或格式异常)。

以下为完整可运行示例:

import pandas as pd

# 构造示例数据
data = {
    'ID': ['089', '983', '037', '654'],
    'Schedule_Date': ['2024-02-06T00:00:00.000Z', '2024-03-17T00:00:00.000Z', 
                      '2024-02-02T00:00:00.000Z', '2024-08-14T00:00:00.000Z'],
    'Out_Date': ['2024-02-08T00:00:00.000Z', '2024-04-27T00:00:00.000Z', 
                 '2024-05-24T00:00:00.000Z', '2024-02-26T00:00:00.000Z']
}
df = pd.DataFrame(data, index=['rank1', 'rank2', 'rank3', 'rank4'])

# ✅ 关键步骤:将字符串列转为 datetime(自动识别 Z 时区)
df['Schedule_Date'] = pd.to_datetime(df['Schedule_Date'])
df['Out_Date'] = pd.to_datetime(df['Out_Date'])

# ✅ 计算日期差(返回 Timedelta 类型),再提取天数
df['days_alert'] = (df['Out_Date'] - df['Schedule_Date']).dt.days

print(df)

输出结果:

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载

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

        ID             Schedule_Date                  Out_Date  days_alert
rank1  089 2024-02-06 00:00:00+00:00 2024-02-08 00:00:00+00:00           2
rank2  983 2024-03-17 00:00:00+00:00 2024-04-27 00:00:00+00:00          41
rank3  037 2024-02-02 00:00:00+00:00 2024-05-24 00:00:00+00:00         112
rank4  654 2024-08-14 00:00:00+00:00 2024-02-26 00:00:00+00:00        -170

⚠️ 注意事项与最佳实践:

  • 不要用 datetime.strptime() 处理整个 Series:strptime 是单值函数,对 pandas Series 会报错;若坚持使用,需配合 apply(),但性能远低于向量化的 pd.to_datetime()。
  • 时区一致性很重要:Z 表示 UTC,pd.to_datetime() 会自动将其解析为带时区的 datetime64[ns, UTC]。若后续需转换为本地时区,可用 .dt.tz_convert('Asia/Shanghai')。
  • 处理缺失值(NaN):pd.to_datetime() 默认将无效值转为 NaT(Not a Time),减法结果也为 NaT,.dt.days 会返回 NaN —— 符合预期,无需额外清洗。
  • 性能提示:若数据量极大(千万级),可添加 infer_datetime_format=True 加速解析(但仅适用于标准格式)。

总结:pd.to_datetime() 是处理 ISO 时间字符串的首选工具,它简洁、鲁棒、支持时区且完全向量化。牢记“先转换、再计算”的原则,即可高效完成日期差分析任务。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

340

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

252

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

711

2026.04.13

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1789

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1211

2024.06.27

js 字符串转数组
js 字符串转数组

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

1838

2023.08.03

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

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

2904

2023.09.04

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

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

6224

2023.10.24

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn