首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:从日期时间减去时间

Python:从日期时间减去时间
EN

Stack Overflow用户
提问于 2017-09-28 16:44:58
回答 1查看 1.7K关注 0票数 0

我知道有很多关于这个问题的问题,但我无法实现的解决方案,这是非常令人沮丧的,所以问。

我有一列日期时间,例如:

代码语言:javascript
复制
time                      timezone
2015-03-10 18:20:27       Eastern Time
2015-04-14 21:22:15       Pacific Time
2015-04-10 18:03:10       Mountain Time

我想从Pacific Time减去3小时,从Mountain Time减去2小时,保持东部时间不变。

我的解决方案:

代码语言:javascript
复制
df_slice["Time"] = df_slice["time"].map(lambda x: x.time().isoformat())

fmt = "%H:%M%:%S"
def tz_adjust(row):
    if row["timezone"] == "Pacific Time":
        return row["Time"] - datetime.datetime.strptime("03:00:00",fmt)
    elif row["timezone"] == "Mountain Time":
        return row["Time"] - datetime.datetime.strptime("02:00:00",fmt)
    else:
        return row["Time"]

df_slice["Tz_Time"] = df_slice.apply(tz_adjust,axis=1)

我得到以下错误:

ValueError:("':‘是格式’%H:%M%:%S‘,发生在索引1261660’中的错误指令)

我还尝试使用time.time()转换为时间,然后根据时区减去小时,得到

datetime.time()和datetime.time()的操作数"-“错误

任务的简单解决方案是什么?这似乎相当容易。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 16:53:07

您需要使用时三角洲从日期时间中减去小时。

代码语言:javascript
复制
def tz_adjust(row):
    if row["timezone"] == "Pacific Time":
        return datetime.datetime.strptime(row["Time"], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(hours=3)
    elif row["timezone"] == "Mountain Time":
        return datetime.datetime.strptime(row["Time"], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(hours=2)
    else:
        return row["Time"]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46474350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档