In paris in 2013, we changed to DST in 2013-03-31 (at 2 AM it was 3 AM), from UTC+1 to UTC+2 (DST)
Here's an example of the issue I have with arrow :
>>> import arrow, datetime
>>> just_before = arrow.get(datetime.datetime(2013, 03, 31, 1, 50, 45), "Europe/Paris").ceil("hour")
>>> just_before
<Arrow [2013-03-31T01:59:59.999999+01:00]>
>>> just_after = just_before.replace(microseconds=+1)
>>> just_after
<Arrow [2013-03-31T02:00:00+02:00]>
>>> # That is not right... It should be either 2 AM UTC+1 or preferably 3AM UTC +2
>>> # One could argue that depending on what you ask for, it may be the correct answer, but then the following is :
>>> (just_after - just_before).total_seconds()
1e-06
>>> # That is right but not consistent with the dates
>>> (just_after.to("utc") - just_before.to("utc").total_seconds()
-3599.999999
# That should be the same value as the previous computation. Plus, the value is negative because :
>>> just_before.to('utc'), just_after.to('utc')
(<Arrow [2013-03-31T00:59:59.999999+00:00]>,
<Arrow [2013-03-31T00:00:00+00:00]>)
I think the problem is pretty clear...
In paris in 2013, we changed to DST in 2013-03-31 (at 2 AM it was 3 AM), from UTC+1 to UTC+2 (DST)
Here's an example of the issue I have with arrow :
I think the problem is pretty clear...