How to create list of dates between two dates?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Charlote
    New Member
    • Feb 2008
    • 3

    How to create list of dates between two dates?

    Hello,
    I am a beginner in python, and have a question..
    I need to create a list of all dates between two dates..
    Lets say beggining date= 2008-1-15
    enddate= 2008-2-20
    how do I get a list
    dates = [2008-1-15, 2008-1-16,...,2008-2-20] ?
  • bvdet
    Recognized Expert Specialist
    • Oct 2006
    • 2851

    #2
    Originally posted by Charlote
    Hello,
    I am a beginner in python, and have a question..
    I need to create a list of all dates between two dates..
    Lets say beggining date= 2008-1-15
    enddate= 2008-2-20
    how do I get a list
    dates = [2008-1-15, 2008-1-16,...,2008-2-20] ?
    The datetime module is useful for this problem. Create a datetime object for the start and end dates. The following determines the number of days: [code=Python](end_date+datet ime.timedelta(d ays=1)-start_date).day s)[/code]Use that value +1 for a range of days. Each date can be incremented by an integer like this:[code=Python]start_date+date time.timedelta( days=i)[/code]

    Comment

    • Charlote
      New Member
      • Feb 2008
      • 3

      #3
      Originally posted by bvdet
      The datetime module is useful for this problem. Create a datetime object for the start and end dates. The following determines the number of days: [code=Python](end_date+datet ime.timedelta(d ays=1)-start_date).day s)[/code]Use that value +1 for a range of days. Each date can be incremented by an integer like this:[code=Python]start_date+date time.timedelta( days=i)[/code]

      Thx for quick reply,
      I understand the principle of incrementing days, but how to store each day into list or tuple?

      In C I would have something like

      DATES=[]
      number of days=30
      start_date= ...
      end_date= ...

      while (start_date <= end_date)
      {
      for(i=0; i<30; i++)
      DATES[i]=start_date;

      start_date++;
      }

      Comment

      • Charlote
        New Member
        • Feb 2008
        • 3

        #4
        I solved it .. It look so simple now.. :)
        Thx for the help..

        Comment

        • bvdet
          Recognized Expert Specialist
          • Oct 2006
          • 2851

          #5
          Originally posted by Charlote
          I solved it .. It look so simple now.. :)
          Thx for the help..
          You are welcome. I am glad you were able to solve it. Here's what I came up with:[code=Python]import datetime

          def date_range(star t, end):
          r = (end+datetime.t imedelta(days=1 )-start).days
          return [start+datetime. timedelta(days= i) for i in range(r)]

          start = datetime.date(2 007,01,01)
          end = datetime.date(2 008,02,01)
          dateList = date_range(star t, end)
          print '\n'.join([str(date) for date in dateList])

          >>> 2007-01-01
          2007-01-02
          2007-01-03
          2007-01-04
          2007-01-05
          ...............
          [/code]

          Comment

          Working...