【问题标题】:How to use striptime '%Y-%m-%d %H:%M:%S' minus - 1 minute.?如何使用 striptime '%Y-%m-%d %H:%M:%S' 减去 - 1 分钟。?
【发布时间】:2019-05-02 22:36:01
【问题描述】:

我试图基本上使用剥离时间,它给了我 '%Y-%m-%d %H:%M:%S' 等格式 '2019-05-03 09:00:00' 而我想要实现的是我想要那个时间 - 1 分钟所以输出应该是 - 2019-05-03 08:59:00

到目前为止我所做的是

    date_time = '2019-05-03 09:00:00'
    target = datetime.strptime(date_time, '%Y-%m-%d %H:%M:%S')

    now = datetime.now()

    delta = target - now

    if delta > timedelta(0):
        print('Will sleep {} : {}'.format(date_time, delta))
        time.sleep(delta.total_seconds())

而且我不确定如何使该功能完成 - 1 分钟。我不确定它是否可能?

【问题讨论】:

标签: python datetime


【解决方案1】:

您似乎打算在 if 子句中使用名为 target 的格式化日期时间变量,但您使用了名为 date_time 的该日期的字符串表示形式。

改用日期时间对象并减去timedelta(minutes=1)

工作示例:

date_time = '2019-05-03 09:00:00'
target = datetime.strptime(date_time, '%Y-%m-%d %H:%M:%S')

now = datetime.now()

delta = target - now

if delta > timedelta(0):
    target = target - timedelta(minutes=1)
    print('Will sleep {} : {}'.format(target, delta))
    time.sleep(delta.total_seconds())

【讨论】:

  • 我认为您需要将target = target - timedelta(minutes=1) 移动到now = datetime.nowdelta = target - now 之间才能真正使其在实际目标时间前1 分钟开始?
  • 是的,如果你想在 if 语句计算前减去一分钟,你绝对应该这样做。
  • 谢谢!这正是我想做的!
【解决方案2】:

如果您想使用当前时间来确定您的输出

import datetime, time
from datetime import timedelta

daytime = '2019-05-03 09:00:00'
target = datetime.datetime.strptime(daytime, '%Y-%m-%d %H:%M:%S')
print (datetime.datetime.now())

now = datetime.datetime.now()
new_time = target-now

if  new_time > datetime.timedelta(0):
        print('Will sleep {} : {}'.format(daytime, new_time))
        time.sleep(new_time.total_seconds())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2016-12-20
    • 2019-01-28
    • 2020-03-18
    • 2019-01-08
    相关资源
    最近更新 更多