From e5739a69a755000143849d7f776c4ff2ef8b690a Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 19 Nov 2001 18:36:43 +0000 Subject: [PATCH] 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. --- Lib/email/Utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Lib/email/Utils.py b/Lib/email/Utils.py index 8d46096fdfa..b86091b5bc8 100644 --- a/Lib/email/Utils.py +++ b/Lib/email/Utils.py @@ -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