dt = datetime.fromtimestamp(date_time,
timezone.utc).astimezone()
elif isinstance(date_time, tuple):
- try:
- gmtoff = date_time.tm_gmtoff
- except AttributeError:
+ gmtoff = getattr(date_time, "tm_gmtoff", None)
+ if gmtoff is None:
if time.daylight:
dst = date_time[8]
if dst == -1:
internal = imaplib.Time2Internaldate(t)
self.assertEqual(internal, expected)
+ @run_with_tz('STD-1DST,M3.2.0,M11.1.0')
+ def test_Time2Internaldate_datetime_timetuple(self):
+ date_time = datetime.fromtimestamp(2000000000).timetuple()
+ self.assertIsNone(date_time.tm_gmtoff)
+ self.assertEqual(
+ imaplib.Time2Internaldate(date_time),
+ '"18-May-2033 05:33:20 +0200"',
+ )
+
def test_that_Time2Internaldate_returns_a_result(self):
# Without tzset, we can check only that it successfully
# produces a result, not the correctness of the result itself,
--- /dev/null
+Fix :func:`imaplib.Time2Internaldate` to use the local timezone offset for
+``time.struct_time`` values with ``tm_gmtoff`` set to ``None``, as returned by
+``datetime.datetime.timetuple()``. Contributed by Xiao Yuan.