如何在Python中为格式化时间字符串添加指定时长
如何在Python中给格式化的时间字符串添加指定时长?
你遇到的报错核心原因很简单:你直接把字符串类型的时间和timedelta对象做加法了,Python没办法直接对字符串和时间增量进行运算——必须先把时间字符串转换成datetime对象,完成运算后再转成你需要的字符串格式才行。
我给你整理了两种可行的实现方案,适配不同的Python版本:
方法1:使用strptime解析(兼容绝大多数Python版本)
这种方法对Python版本要求低,不管是旧版还是新版都能用:
from datetime import datetime, timedelta # 原始时间字符串 timestemp_Original = '2021-07-13T00:15:00Z' # 1. 将字符串解析为datetime对象 dt_original = datetime.strptime(timestemp_Original, '%Y-%m-%dT%H:%M:%SZ') # 2. 添加指定时长(这里是15分钟) dt_added = dt_original + timedelta(minutes=15) # 3. 转换回你需要的字符串格式 timestemp_Added = dt_added.strftime('%Y-%m-%dT%H:%M:%SZ') print(timestemp_Added) # 输出:2021-07-13T00:30:00Z
这里的%Y-%m-%dT%H:%M:%SZ是和你的时间字符串完全匹配的格式符,各个部分对应:
%Y:4位数的年份%m:2位数的月份%d:2位数的日期%H:24小时制的小时数%M:分钟数%S:秒数- 最后的
Z直接匹配字符串结尾的UTC标识
方法2:使用fromisoformat(Python 3.7+更简洁)
从Python 3.7开始,datetime提供了fromisoformat方法来快速解析ISO 8601格式的时间字符串,不过注意:
- Python 3.11及以上版本可以直接解析带
Z的字符串 - 3.10及以下版本需要先把
Z替换成+00:00(因为Z代表UTC+0时区)
代码示例:
from datetime import datetime, timedelta timestemp_Original = '2021-07-13T00:15:00Z' # 适配低版本Python:替换Z为+00:00 dt_original = datetime.fromisoformat(timestemp_Original.replace('Z', '+00:00')) # 添加时长 dt_added = dt_original + timedelta(hours=0, minutes=15) # 转换回带Z的字符串格式 timestemp_Added = dt_added.isoformat().replace('+00:00', 'Z') print(timestemp_Added) # 输出:2021-07-13T00:30:00Z
总结一下:所有操作的核心都是先转成datetime对象再做时间运算,字符串只是时间的展示形式,不能直接参与时间增量的计算哦~
内容的提问来源于stack exchange,提问作者PeterBe
相关产品推荐
相关产品推荐

