如何在Python中倒数天数?
为了进行web API查询,我尝试格式化一组由管道(“|”)分隔的日期,按时间倒数七天,并将每个日期添加到一个复合字符串中。我阅读了文档并拼凑出date.today()和datetime.timedelta的组合是我所需要的。我写的方法是:如何在Python中倒数天数?,python,date,Python,Date,为了进行web API查询,我尝试格式化一组由管道(“|”)分隔的日期,按时间倒数七天,并将每个日期添加到一个复合字符串中。我阅读了文档并拼凑出date.today()和datetime.timedelta的组合是我所需要的。我写的方法是: def someMethod(): ret = '' pythonic_date = datetime.date.today() for i in range(0, 8): pythonic_date -= datet
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/2015年6月2日| SomePage/2015年6月1日| SomePage/2015年5月31日| SomePage/2015年5月30日| SomePage/2015年5月29日| SomePage/2015年5月28日| SomePage/2015年5月27日| SomePage/2015年5月26日
相反,我得到以下输出:
SomePage/2015年6月2日| SomePage/2015年6月1日| SomePage/2015年6月31日| SomePage/2015年6月30日| SomePage/2015年6月29日| SomePage/2015年6月28日| SomePage/2015年6月27日| SomePage/2015年6月26日
我看到这里使用timedelta
只是简单地循环date类对象中的day字段,而不是对整个日期进行操作。我有两个问题:
编辑:再看一眼,我写的函数甚至不能处理年与年之间的移动。说真的,还有什么更好的方法?datetime文档()非常密集。不,这根本不是timedelta所做的。它完全符合你的期望 错误只存在于代码中:您总是从
datetime.date.today()
打印月份,而不是从pythonic\u date
打印月份
打印格式化日期的更好方法是使用单个调用strftime
:
ret += "SomePage" + pythonic_date.strftime("%B %-d, %Y") + "|"
不,这根本不是timedelta所做的。它完全符合你的期望 错误只存在于代码中:您总是从
datetime.date.today()
打印月份,而不是从pythonic\u date
打印月份
打印格式化日期的更好方法是使用单个调用strftime
:
ret += "SomePage" + pythonic_date.strftime("%B %-d, %Y") + "|"
你可以考虑使用这些日期,这会让你的生活更容易。
import arrow
def someMethod():
fulldates = []
for date in [arrow.now().replace(days=-i) for i in range(0, 8)]:
fulldates.append("SomePage/{fmtdate}".format(fmtdate=date.format("MMM D, YYYY")))
return '|'.join(fulldates)
print(someMethod())
输出为
SomePage/Jun 3, 2015|SomePage/Jun 2, 2015|SomePage/Jun 1, 2015|SomePage/May 31, 2015|SomePage/May 30, 2015|SomePage/May 29, 2015|SomePage/May 28, 2015|SomePage/May 27, 2015
你可以考虑使用这些日期,这会让你的生活更容易。
import arrow
def someMethod():
fulldates = []
for date in [arrow.now().replace(days=-i) for i in range(0, 8)]:
fulldates.append("SomePage/{fmtdate}".format(fmtdate=date.format("MMM D, YYYY")))
return '|'.join(fulldates)
print(someMethod())
输出为
SomePage/Jun 3, 2015|SomePage/Jun 2, 2015|SomePage/Jun 1, 2015|SomePage/May 31, 2015|SomePage/May 30, 2015|SomePage/May 29, 2015|SomePage/May 28, 2015|SomePage/May 27, 2015
不相关:并非所有系统都支持。此外,OP还可以使用一个列表:
lst.append(“SomePage/{:%B%d,%Y}.format(pythonic_date))
和返回“|”。
结尾。我不知道在前面添加“-”会删除前导零,但鉴于该解决方案不是平台无关的,我不会使用它。话虽如此,你已经发现了一个我应该在评论中看到的愚蠢错误:谢谢!不相关:并非所有系统都支持。此外,OP还可以使用一个列表:lst.append(“SomePage/{:%B%d,%Y}.format(pythonic_date))
和返回“|”。
结尾。我不知道在前面添加“-”会删除前导零,但鉴于该解决方案不是平台无关的,我不会使用它。话虽如此,你已经发现了一个我应该在评论中看到的愚蠢错误:谢谢!这个答案缺少一件事:我还需要以某种方式剪掉day字段中的前导零。我编辑了代码以便没有前导零,输出也会更新,指向箭头的链接不再有效。这个答案缺少一件事:我还需要剪掉day字段中的前导零,不知何故,我编辑了代码,这样就没有前导零,输出也会更新,指向箭头的链接也不再有效。