formatdate(): Jason Mastaler correctly points out that divmod with a

negative modulus won't return the right values.  So always do positive
modulus on an absolute value and twiddle the sign as appropriate after
the fact.
This commit is contained in:
Barry Warsaw 2001-11-19 18:36:43 +00:00
parent 75a40fcc3a
commit e5739a69a7
1 changed files with 8 additions and 2 deletions

View File

@ -130,8 +130,14 @@ def formatdate(timeval=None, localtime=0):
offset = time.altzone
else:
offset = time.timezone
hours, minutes = divmod(offset, -3600)
zone = '%+03d%02d' % (hours, minutes / -60)
hours, minutes = divmod(abs(offset), 3600)
# Remember offset is in seconds west of UTC, but the timezone is in
# minutes east of UTC, so the signs differ.
if offset > 0:
sign = '-'
else:
sign = '+'
zone = '%s%02d%02d' % (sign, hours, minutes / 60)
else:
now = time.gmtime(timeval)
# Timezone offset is always -0000