Skip to main content
 首页 » 编程设计

python之如何在 Python 中倒计时

2025年05月04日13kenshinobiy

我正在尝试格式化一组由竖线(“|”)分隔的日期,以便我进行的 Web API 查询,及时倒计时 7 天并将这些日期中的每一个添加到复合字符串中。我阅读了文档并将 date.today() 和 datetime.timedelta 的组合拼凑在一起是我需要的。我写的方法:

def someMethod(): 
    ret = '' 
    pythonic_date = datetime.date.today() 
    for i in range(0, 8): 
        pythonic_date -= datetime.timedelta(days=1) 
        ret += "SomePage" + datetime.date.today().strftime("%B" + " ") 
        ret += str(pythonic_date.day).lstrip('0') 
        ret += ", " + str(pythonic_date.year) + "|" 
    ret = ret[0:len(ret) - 1] 
    return ret 

我希望得到以下输出:

SomePage/June 2, 2015|SomePage/June 1, 2015|SomePage/May 31, 2015|SomePage/May 30, 2015|SomePage/May 29, 2015|SomePage/May 28, 2015|SomePage/May 27, 2015|SomePage/May 26, 2015

相反,我得到以下输出:

SomePage/June 2, 2015|SomePage/June 1, 2015|SomePage/June 31, 2015|SomePage/June 30, 2015|SomePage/June 29, 2015|SomePage/June 28, 2015|SomePage/June 27, 2015|SomePage/June 26, 2015

我看到在这里使用 timedelta 只是天真地循环回日期类对象中的日期字段,而不是对整个日期进行操作。我有两个问题:

  1. 为什么要这样实现?
  2. 我该怎么做才能得到我想要的东西?

编辑:再看一遍,我编写的函数甚至无法处理年份之间的移动。说真的,这样做的更好方法是什么?日期时间文档 ( https://docs.python.org/3/library/datetime.html#datetime.timedelta.resolution ) 非常密集。

请您参考如下方法:

不,这根本不是 timedelta 所做的。它完全符合您的预期。

错误只是在您的代码中:您总是从 datetime.date.today() 中打印月份,而不是从 pythonic_date 中打印。

打印格式化日期的更好方法是使用对 strftime 的单个调用:

ret += "SomePage" + pythonic_date.strftime("%B %-d, %Y") + "|"