簡體   English   中英

Python:從日期時間減去時間

[英]Python: Subtracting time from datetime

我知道關於這個問題有很多問題,但是我無法實現的任何解決方案都令人非常沮喪。

我有一列日期時間,例如:

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小時,並保持東部時間不變。

我的解決方案:

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()的操作數“-”錯誤

該任務的簡單解決方案是什么? 這似乎很容易。

您需要使用timedelta從datetime中減去小時。

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"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM