w3resource

Python: Get a list of dates between two dates

Python Datetime: Exercise-50 with Solution

Write a Python program to get a list of dates between two dates.

Sample Solution:

Python Code:

from datetime import timedelta, date

def daterange(date1, date2):
    for n in range(int ((date2 - date1).days)+1):
        yield date1 + timedelta(n)

start_dt = date(2015, 12, 20)
end_dt = date(2016, 1, 11)
for dt in daterange(start_dt, end_dt):
    print(dt.strftime("%Y-%m-%d"))
	

Sample Output:

2015-12-20                                                                                                    
2015-12-21                                                                                                    
2015-12-22                                                                                                    
2015-12-23                                                                                                    
2015-12-24                                                                                                    
2015-12-25                                                                                                    
2015-12-26                                                                                                    
2015-12-27                                                                                                    
2015-12-28                                                                                                    
2015-12-29                                                                                                    
2015-12-30                                                                                                    
2015-12-31   
-------
2016-01-08                                                                                                    
2016-01-09                                                                                                    
2016-01-10                                                                                                    
2016-01-11 

Flowchart:

Flowchart: Get a list of dates between two dates.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Python Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a Python program to convert a string into datetime.
Next: Write a Python program to generate RFC 3339 timestamp.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Python: Tips of the Day

How do I sort a dictionary by value?

Python 3.6+

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
{k: v for k, v in sorted(x.items(), key=lambda item: item[1])}
{0: 0, 2: 1, 1: 2, 4: 3, 3: 4}

Older Python

It is not possible to sort a dictionary, only to get a representation of a dictionary that is sorted. Dictionaries are inherently orderless, but other types, such as lists and tuples, are not. So you need an ordered data type to represent sorted values, which will be a list-probably a list of tuples.

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

sorted_x will be a list of tuples sorted by the second element in each tuple. dict(sorted_x) == x.

And for those wishing to sort on keys instead of values:

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))

In Python3 since unpacking is not allowed [1] we can use

x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=lambda kv: kv[1])

If you want the output as a dict, you can use collections.OrderedDict:

import collections

sorted_dict = collections.OrderedDict(sorted_x)

Ref: https://bit.ly/3dJyjpV