首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datetime模块和Timedelta

Datetime模块和Timedelta
EN

Stack Overflow用户
提问于 2019-10-17 14:14:36
回答 2查看 59关注 0票数 0

我需要在当前时间上加一个小时,然后用会议记录减去它。

例如:当前时间= 7: 31,附加时间= 7:31 +1小时= 8:31,所需时间= 8:31 -31= 8:00。

任何帮助或解决办法都将不胜感激。

代码语言:javascript
复制
from datetime import datetime, timedelta
import time
addedtime = (datetime.now() + timedelta(hours=1)).strftime('%H:%M')
    requiredtime = addedtime - timedelta(now.minutes).strftime('%H:%M')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-17 14:29:43

您将addedtime设置为字符串而不是datetime,然后陷入麻烦,因为您试图从该字符串中减去一个timedelta

代码语言:javascript
复制
>>> addedtime = (datetime.now() + timedelta(hours=1)).strftime('%H:%M')
>>> addedtime
'23:30'
>>> addedtime - timedelta(minutes=4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'

相反,只要您需要将它们作为时点操作,并在需要最终结果时将它们转换为字符串,则将它们保留为时间点:

代码语言:javascript
复制
>>> time1 = datetime.now()
>>> time1
datetime.datetime(2019, 10, 17, 22, 23, 55, 860195)

>>> time2 = time1 + timedelta(hours=1)
>>> time2
datetime.datetime(2019, 10, 17, 23, 23, 55, 860195)

>>> time3 = time2 - timedelta(minutes=time2.minute)
>>> time3
datetime.datetime(2019, 10, 17, 23, 0, 55, 860195)

>>> time3.strftime("%H:%M")
'23:00'

当然,您也可以将其作为一个操作来执行,因为您可以使用单个timedelta增加一个小时并减去一些分钟。

代码语言:javascript
复制
>>> final = (time1 + timedelta(hours=1, minutes=-time1.minute)).strftime("%H:%M")
>>> final
'23:00'
票数 0
EN

Stack Overflow用户

发布于 2019-10-17 14:43:03

为什么不探索Python的许多令人惊奇的日期时间库..。

pip安装parsedatetime

代码语言:javascript
复制
import parsedatetime as pdt
from datetime import datetime

if __name__ == '__main__':        
    cal = pdt.Calendar()
    dt, result = cal.parse("10 minutes before an hour from now")
    print(datetime(*dt[:6]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58434722

复制
相关文章

相似问题

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