【问题标题】:How to use for loop and add one day (timedelta) every time如何使用for循环并每次添加一天(timedelta)
【发布时间】:2016-06-23 11:55:06
【问题描述】:

这是我的代码:

import datetime

date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
while not date == today:
    date_counter+=1
    date += oneday

在这段代码中,我使用 while 循环来实现我的目标——计算从今天到用户选择的特定日期之间的天数。

但是,我想使用 for 循环来做同样的事情。可以用for重写吗?

【问题讨论】:

  • 这是为什么呢?为什么要使用 for 循环?
  • 我很好奇 for 循环是否有比我更好的方法
  • 更好的方法是首先不对此类任务使用循环。此外,您所说的在 python 上使用 for 循环是不可能的。
  • 好吧,我就是想知道有没有可能!谢谢!你可以回答这个问题,我会给你最好的答案。谢谢你:)
  • 很高兴我能帮上忙。完成了。

标签: python for-loop while-loop


【解决方案1】:

dates 的减法得到timedelta

import datetime
date = datetime.date(2015,10,1)
today = datetime.date.today()
date_counter = (today - date).days

如果您真的想要使用 for 循环,但是,您可以这样做:

导入日期时间

date = datetime.date(2015,10,1)
today = datetime.date.today()
one_day = datetime.timedelta(days=1)

date_counter = 0

def gen_dates(some_date):
    while some_date != today:
        some_date += one_day
        yield some_date

for d in gen_dates(date):
    date_counter += 1
    print(date_counter, ':', d)

【讨论】:

  • 你的答案很完美,所以我给你投票!谢谢你:)
【解决方案2】:

不建议您使用您正在使用的方法。更好的方法是首先不使用循环。您可以尝试以下代码:

import datetime

date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)

date_counter = (today - date).days

回答您关于使用 for 循环的可能性的问题。我会说一个很大的不。希望这会有所帮助。

【讨论】:

    【解决方案3】:

    只有当你想在这个范围内的每一天都做某事时,下面的代码才有意义。

    import datetime
    
    date = datetime.date(2016,2,1)
    today = datetime.date.today()
    oneday = datetime.timedelta(days = 1)
    
    date_counter = 0
    for days in range(0, (today - date).days):
         date_counter += 1
         date += oneday
    

    如果你只需要天数可以用这个

    date_counter = (today - date).days
    

    【讨论】:

      【解决方案4】:

      这个也可以用

      import datetime
      
      date = datetime.date(2015,10,1)
      today = datetime.date.today()
      oneday = datetime.timedelta(days = 1)
      
      date_counter = 0
      l = [1]
      for i in l:
          if not date == today:
              date_counter+=1
              date += oneday
              l.append(1)
      
      print date_counter
      

      【讨论】:

      • @NighttimeDriver50000 我知道这不是最好的方法,我给了它另一种方法,在 for 循环中显示列表可以在 for 循环中修改
      • 我知道你知道;我只是为你的创造力鼓掌。
      【解决方案5】:
      from datetime import date
      
      d0 = date(2015,10,1)
      d1 = datetime..today()
      delta =  d1 - d0
      print delta.days
      

      您可以使用标准函数轻松计算日期差异。

      (today - date).days
      

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多