I want to print all hours between given two datetime accounting for daylight savings.
This is what I have started at:
from datetime import date, timedelta as td, datetime
d1 = datetime(2008, 8, 15, 1, 1, 0)
d2 = datetime(2008, 9, 15, 1, 12, 4)
while(d1<d2):
d1 = d1 + td(hours=1)
print d1
But what do I do for daylight time savings. How do I jump or add an hour for daylight savings ?
Edit: Based on suggestion below I wrote the following code and it still prints the daylight savings time for 2016.
import pytz
from datetime import date, timedelta as td, datetime
eastern = pytz.timezone('US/Eastern')
d1 = eastern.localize(datetime(2016, 3, 11, 21, 0, 0))
d2 = eastern.localize(datetime(2016, 3, 12, 5, 0, 0))
d3 = eastern.localize(datetime(2016, 11, 4, 21, 0, 0))
d4 = eastern.localize(datetime(2016, 11, 5, 5, 0, 0))
while(d1<d2):
print d1
d1 = d1 + td(hours=1)
while(d3<d4):
print d3
d3 = d3 + td(hours=1)
Output:
2016-03-11 21:00:00-05:00
2016-03-11 22:00:00-05:00
2016-03-11 23:00:00-05:00
2016-03-12 00:00:00-05:00
2016-03-12 01:00:00-05:00
2016-03-12 02:00:00-05:00
2016-03-12 03:00:00-05:00
2016-03-12 04:00:00-05:00
2016-11-04 21:00:00-04:00
2016-11-04 22:00:00-04:00
2016-11-04 23:00:00-04:00
2016-11-05 00:00:00-04:00
2016-11-05 01:00:00-04:00
2016-11-05 02:00:00-04:00
2016-11-05 03:00:00-04:00
2016-11-05 04:00:00-04:00
Edit 2: Desired result: In march hour skips and at 2 AM it becomes 3 AM.
2016-03-11 23:00:00-05:00
2016-03-12 00:00:00-05:00
2016-03-12 01:00:00-05:00
2016-03-12 03:00:00-05:00
In Nov, an hour is added at 2 AM, so 2 AM repeats, it should look like:
2016-11-04 23:00:00-04:00
2016-11-05 00:00:00-04:00
2016-11-05 01:00:00-04:00
2016-11-05 02:00:00-04:00
2016-11-05 02:00:00-04:00
2016-11-05 03:00:00-04:00