【问题标题】:reduce 5 minutes from time using timedelta使用 timedelta 减少 5 分钟
【发布时间】:2021-08-19 13:34:32
【问题描述】:

希望在计算时间后打印时间少于 5 分钟:

now = datetime(2020,11,9,13,38,18)


t0 = datetime.strptime((now - timedelta(minutes =(now.minute - (now.minute - (now.minute % 5))), seconds = now.second)).strftime("%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M:%S") #getting the time in multiples of 5 i.e 13:35:00
t1 = (t0 - timedelta(minutes = (t0.minute - 5))) #reducing 5 mins i.e 13:30:00
print(t0)
print(t1)

t0 给出了预期的结果,但 t1 打印了 13:05:00,但它应该是 13:30:00

【问题讨论】:

  • 你能不能再分解一下,这样我们就不需要绞尽脑汁来了解这里发生了什么以及你想要实现什么......?
  • minutes =(now.minute - (now.minute - (now.minute % 5))) in t0 也可以编码为minutes =now.minute % 5,这就是您与 t0 和 t1 的数学混淆的地方

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


【解决方案1】:

如果我理解正确你的问题,你可以这样做:

now = datetime(2020,11,9,13,38,18)
t0 = datetime.strptime((now - timedelta(minutes =(now.minute - (now.minute - (now.minute % 5))), seconds = now.second)).strftime("%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M:%S") #getting the time in multiples of 5 i.e 13:35:00
t1 = t0 - timedelta(minutes=5)
print(t1)
>>> datetime.datetime(2020, 11, 9, 13, 30)

基本上,如果您想从日期时间对象中“删除” 5 分钟,您可以使用 timedelta 传递分钟数作为参数(在本例中为 5)。

结果是另一个日期时间对象。如果您愿意,可以根据需要将其格式化为字符串。

您的代码是错误的,因为这样您“删除”了 25 分钟 (t0.minute = 30 - 5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多