【问题标题】:Convert Days and Time (Hours x Minutes x Seconds) to Time only仅将日期和时间(小时 x 分钟 x 秒)转换为时间
【发布时间】:2018-07-05 18:18:08
【问题描述】:

我有一个数据框,我在其中对两个不同的日期进行区分以获得小时和分钟的差异,例如:

 start_date = '2018-07-03 16:03:00'
 data_final = '2018-07-05 00:00:00'
 duration = data_final - start_date

我要查找的结果是'31: 57: 00',即两个日期之间的总时差。但我得到的结果是:'1 day, 7:57:00'(每 24 小时写为 1 天)。

我尝试使用以下语句将其转换为 XMinutesHours 格式:

print (datetime.datetime.strptime (duration, "%H:%M:%S"))

但我得到了错误:

ValueError: 时间数据 '1 day, 7:57:00' 与格式 '%H:% 不匹配 M:%S'

有什么想法吗?

【问题讨论】:

  • 检查“%”符号后的空格
  • 已经检查过朋友。但是没用

标签: python python-3.x datetime


【解决方案1】:

您需要以小时、分钟和秒为单位计算当量, 你可以实现一个函数来获取这个值,例如:

from datetime import datetime

def get_duration(duration):
    hours = int(duration / 3600)
    minutes = int(duration % 3600 / 60)
    seconds = int((duration % 3600) % 60)
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)

format_str = '%Y-%m-%d %H:%M:%S'
start_date_str = '2018-07-03 16:03:00'
end_date_str = '2018-07-05 00:00:00'

start_date = datetime.strptime(start_date_str, format_str)
end_date = datetime.strptime(end_date_str, format_str)
duration = (end_date - start_date).total_seconds()

print(get_duration(duration))

【讨论】:

  • 优秀的 Hydex,它对我有用,谢谢你的时间兄弟!我之前只需要使用我在您的答案中添加的功能进行转换。
【解决方案2】:

你拥有的是一个datetime.timedelta 对象,它是你从两个datetime.datetime 对象的减法中得到的。这个问题已经回答了here

附带说明一下,当您真正想使用strftime 时,您似乎正在尝试使用strptimestrptime parses 一个字符串并将其转换为一个 datetime.datetime 对象(因此是 p),而 strftime f格式化一个datetime.datetime 对象作为字符串(因此是 f)。

【讨论】:

    【解决方案3】:

    首先使用 pd.to_datetime 将列转换为日期时间字段。

    假设您有一个带有 start_time 列的数据框 df。

    import pandas as pd
    
    df['start_time'] = pd.to_datetime(df['start_time']
    df['end_time'] = pd.to_datetime(df['end_time']
    
    df['time_diff'] = (df.end_time - df.start_time) #gets the time in hours
    

    如果您想将其转换为小时使用:

    df['time_diff'] = df['time_diff'].dt.total_seconds()/(3600.0)
    

    但这不会完全以 H:M:S 格式给出。

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多