【问题标题】:Removing " x days " from datetime.timedelta object从 datetime.timedelta 对象中删除“x 天”
【发布时间】:2021-02-16 02:55:32
【问题描述】:

我需要创建一个报告,我需要减去两个日期并以以下形式返回 %H:%M%S

这是我插入列表的减法:

time_difference_temp=datetime.strptime(next_time,"%Y-%m-%d %H:%M:%S") - datetime.strptime(current_time,"%Y-%m-%d %H:%M:%S")
time_difference.append(time_difference_temp)
return time_difference

此列表返回>

def push_to_csv(time_difference):
    df = pd.read_csv('time_differences.csv')
    df["Delta"] = time_difference
    df.dropna(subset=["Data"], inplace=True)
    df.to_csv("Final_ReportX.csv")

在 csv Final_ReportX 中,它以以下形式保存: 0 天 00:05:39

我需要它在 00:05:39 返回,没有天。

*正则表达式不是一个选项

谢谢!

【问题讨论】:

标签: python python-3.x datetime datetime-format


【解决方案1】:

您可以使用自定义函数将 timedelta 转换为 H:M:S 字符串:

def td_to_str(td):
    """
    convert a timedelta object td to a string in HH:MM:SS format.
    """
    hours, remainder = divmod(td.total_seconds(), 3600)
    minutes, seconds = divmod(remainder, 60)
    return f'{int(hours):02}:{int(minutes):02}:{int(seconds):02}'

s = pd.Series(pd.to_timedelta(['1 day, 00:05:39']))

s.apply(td_to_str)
# 0    24:05:39
# dtype: object

【讨论】:

  • 谢谢,这是个好主意。我用 strtime_difference.append(str(time_difference_temp)) 包装解决了这个问题
  • @B.W.: 如果你确定你只有 timedelta str() 很好 ;-)
猜你喜欢
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多