【问题标题】:Adding a duration to a start time string to get a finish time?将持续时间添加到开始时间字符串以获得完成时间?
【发布时间】:2019-01-30 10:56:19
【问题描述】:

我有一个名为startTime 的字符串,我想添加一个duration(以分钟为单位)以获得finishTime

以下是一些示例数据:

startTime : 10:15

duration: 90

在 python 中,添加持续时间以使finishTime 成为11:45 的最佳方法是什么?

非常感谢,任何帮助都非常感谢。

【问题讨论】:

标签: python string datetime time


【解决方案1】:

试试这个:

import datetime

d = datetime.datetime.strptime("10:12","%H:%m") + datetime.timedelta(minutes=90)
new = d.strftime('%H:%m')

new 将是 11:45

【讨论】:

  • 完美谢谢!我有一个游戏,%m 应该是 %M,但它完全有效,我今天也将它用于其他一些转换。所以知道我也知道它是如何工作的。再次感谢先生(以及所有帮助过的人)
【解决方案2】:

我建议将pandas 用于此类任务,因为它比直接使用datetime 模块更直观。

import pandas as pd
startTime = '10:15'
duration = '90'
finishTime = (pd.to_datetime(startTime , format='%H:%M') 
              + pd.to_timedelta(duration + 'min')).strftime(format='%H:%M')

正如 Torxed 和 shmee 所指出的,pandas 不是内置模块,它相当大,大约 70MB,因此可能并不适合所有人。
但是由于 pandas 是处理时间序列数据的最佳工具,而且由于这个问题看起来像是处理时间序列时通常需要的问题,我认为 pandas 的解决方案可能很有趣/有用。

【讨论】:

  • 根本没有争论 :) 但是,我认为使用 3rd 方库的建议应该附带一些声明这一事实的免责声明,并且最好包含指向包主页/文档的链接,如果可用的。顺便说一句:为了完整起见,我认为您应该添加import pandas as pd:D
  • @shmee 我也不是,感谢您的提示。 :) 我实现了两者并添加了一个简短的免责声明。
  • @Torxed 谢谢,这根本不是问题。如果我的解决方案不是您所支持的,也不需要投票。我完全理解,对于像这样的简单案例,pandas 可能不是正确的工具。也感谢您指出这一点。我不介意苛刻的话,但尤其是在互联网上,当您看不到对方时,友好的评论可能会产生更好的效果。
  • 虽然我不能代表 Torxed,但 赞成你的答案,因为你已经把它变成了一个完整且有用的答案。这可能不是我会采取的方法,但这并不会降低它的投票价值,恕我直言。
  • 我同意@shmee。仅仅因为我不会使用或不喜欢某样东西,并不会使它变得不那么可行/好。你必须抛开自己的个人信念,以中立和批判性思维的角度看待这些事情。这是一个很好的答案,不管我怎么想或相信什么。它反映了一些优点,如果您愿意使用外部库,这将很有帮助 - 您在回答中指出了这一点。仅这一点就值得一票。良好的举止应该给予额外的荣誉,遗憾的是没有积分 - 所以你必须接受我的句子,因为它们的价值。干得好:)
【解决方案3】:

您可以使用pd.to_datetime 将字符串转换为日期时间对象,并使用pd.to_timedelta 添加分钟。最后使用strftime将日期时间转换为所需的格式:

import pandas as pd
(pd.to_datetime( '10:15', format='%H:%M') + pd.to_timedelta(90, unit='m')).strftime('%H:%M')
#'11:45'

【讨论】:

  • 为什么投反对票?请说明原因,也许我可以根据您的反馈改进答案
  • 也许您可以给我一些时间来详细说明我的答案?
  • 再次恕我直言,来自@Torxed 的 cmets 非常苛刻。在我看来,如果有人试图提供帮助,请感谢他。即使答案不是 100% 完美(尤其是在发布后的前 15 秒内)。但是,对于发布答案并试图提供帮助的人来说,立即否决答案是令人沮丧的……因此,我赞成你的答案以补偿否决票。 ;)
  • 当然,我也这样做。我每天都会发布一个半完整的答案。但我确保提供的代码可以在发布之前按原样执行。否则,您发布的积分和荣耀无济于事。我会因为在这里不礼貌而讨厌,但事实是这个答案没有帮助 - 目前。你不能运行它,没有解释这些函数是从哪里导入的。答案是两个词“使用这个:”,然后是无法执行的代码。更苛刻的是,给别人一些他们不能使用的东西或指出“这没有用”?
  • 完全同意并感谢您的评论,返回:)
猜你喜欢
  • 2016-02-23
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
相关资源
最近更新 更多