This commit is contained in:
Alexander Belopolsky 2016-03-25 15:46:55 -04:00
commit 16b698b095
3 changed files with 16 additions and 1 deletions

View File

@ -3463,6 +3463,14 @@ class TestDateTimeTZ(TestDateTime, TZInfoBase, unittest.TestCase):
self.assertEqual(dt, local)
self.assertEqual(local.strftime("%z %Z"), "-0400 EDT")
@support.run_with_tz('EST+05EDT,M3.2.0,M11.1.0')
def test_astimezone_default_near_fold(self):
# Issue #26616.
u = datetime(2015, 11, 1, 5, tzinfo=timezone.utc)
t = u.astimezone()
s = t.astimezone()
self.assertEqual(t.tzinfo, s.tzinfo)
def test_aware_subtract(self):
cls = self.theclass

View File

@ -232,6 +232,8 @@ Core and Builtins
Library
-------
- Issue #26616: Fixed a bug in datetime.astimezone() method.
- Issue #26637: The :mod:`importlib` module now emits an :exc:`ImportError`
rather than a :exc:`TypeError` if :func:`__import__` is tried during the
Python shutdown process but :data:`sys.path` is already cleared (set to

View File

@ -4753,7 +4753,12 @@ local_timezone(PyDateTime_DateTime *utc_time)
PyObject *nameo = NULL;
const char *zone = NULL;
delta = datetime_subtract((PyObject *)utc_time, PyDateTime_Epoch);
delta = new_delta(ymd_to_ord(GET_YEAR(utc_time), GET_MONTH(utc_time),
GET_DAY(utc_time)) - 719163,
60 * (60 * DATE_GET_HOUR(utc_time) +
DATE_GET_MINUTE(utc_time)) +
DATE_GET_SECOND(utc_time),
0, 0);
if (delta == NULL)
return NULL;
one_second = new_delta(0, 1, 0, 0);