Closed
Description
It turns out that the Europe/Paris
timezone just got out of DST and is now in UTC+1 back from UTC+2. It means that dates should currently be recorded with +0100. date
does it correctly:
$ TZ='Europe/Paris' date +"%Y-%m-%dT%H:%M:%S%z"
2015-11-04T08:45:34+0100
However, GitPython uses time.altzone
to guess dates in commits, which yields +0200 instead of +0100:
$ TZ='Europe/Paris' python -c 'import time; print(-time.altzone/3600)'
2.0
While the date is still correct, the timezone is now wrong. Indeed, using time.altzone
is only correct when:
time.daylight
is non zero, eg. the current timezone has a DST defined at some point in the year (always true for Europe/Paris, but always false for Indian/Reunion)- and DST is currently active, which you can check with
time.localtime().tm_isdst > 0
.
To fix this issue, you should use this code to get the UTC offset in seconds.
is_dst = time.daylight and time.localtime().tm_isdst > 0
utc_offset = time.altzone if is_dst else time.timezone
You still need to multiply by -1 and divide by 3600, but you will get the correct offset this way.
Thank you!