Daylight savings time question

Dan Stromberg drsalists at gmail.com
Tue Mar 24 19:52:14 EDT 2015


This appears to do what I wanted:

#!/usr/bin/python

from __future__ import print_function

import pytz
import datetime

# Is there a good way of jumping ahead 5 hours instead of 4 on 2015-03-08?

def main():
    # On 2015-03-08, 2:00 AM to 2:59AM Pacific time does not exist -
the clock jumps forward an hour.
    us_pacific = pytz.timezone('US/Pacific')

    weird_naive_datetime = datetime.datetime(2015, 3, 8, 1, 0, 0)
    print('weird_naive_datetime:  ', weird_naive_datetime)

    weird_tz_aware_datetime = us_pacific.localize(weird_naive_datetime)
    print('weird_tz_aware_datetime', weird_tz_aware_datetime)

    four_hours=datetime.timedelta(hours=4)
    print('Four hours later is:   ',
us_pacific.normalize(weird_tz_aware_datetime + four_hours))

    print('...we want numerically 5 hours later (so 6AM), because of
Daylight Savings Time')

main()


On Tue, Mar 24, 2015 at 3:24 PM, Dan Stromberg <drsalists at gmail.com> wrote:
> Is there a way of "adding" 4 hours and getting a jump of 5 hours on
> March 8th, 2015 (due to Daylight Savings Time), without hardcoding
> when to spring forward and when to fall back?  I'd love it if there's
> some library that'll do this for me.
>
> #!/usr/bin/python
>
> import pytz
> import datetime
>
> def main():
>     # On 2015-03-08, 2:00 AM to 2:59AM Pacific time does not exist -
> the clock jumps forward an hour.
>     weird_naive_datetime = datetime.datetime(2015, 3, 8, 1, 0,
> 0).replace(tzinfo=pytz.timezone('US/Pacific'))
>     weird_tz_aware_datetime =
> weird_naive_datetime.replace(tzinfo=pytz.timezone('US/Pacific'))
>     print(weird_tz_aware_datetime)
>     four_hours=datetime.timedelta(hours=4)
>     print('Four hours later is:')
>     print(weird_tz_aware_datetime + four_hours)
>     print('...but I want numerically 5 hours later, because of
> Daylight Savings Time')
>
> main()
>
>
> Thanks!



More information about the Python-list mailing list