Skip to content

Commit 6d8e926

Browse files
committed
Fixes behavior of timezones with no transition.
1 parent 097623b commit 6d8e926

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

pendulum/tz/timezone.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ def _normalize(self, dt, dst_rule=None):
145145
unix_time = (dt - datetime(1970, 1, 1)).total_seconds() - offset
146146

147147
return self._to_local_time(
148-
unix_time, self._default_tzinfo_index
148+
unix_time, dt.microsecond, self._default_tzinfo_index,
149+
fold
149150
)
150151

151152
# Find the first transition after our target date/time

tests/tz_tests/test_timezone.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import pendulum
44
from datetime import datetime, timedelta
55
from pendulum import timezone
6+
from pendulum.tz import Timezone
7+
from pendulum.tz.timezone_info import TimezoneInfo
68
from pendulum.tz.exceptions import NonExistingTime, AmbiguousTime
79

810
from .. import AbstractTestCase
@@ -268,3 +270,16 @@ def test_constructor_fold_attribute_is_honored(self):
268270
dt = datetime(2014, 11, 2, 1, 30, tzinfo=tz, fold=1)
269271

270272
self.assertEqual('-0500', dt.strftime('%z'))
273+
274+
def test_timezone_with_no_transitions(self):
275+
tz = Timezone('Test', (), ((0, False, None, ''),), 0, [])
276+
277+
dt = datetime(2016, 11, 26)
278+
dt = tz.convert(dt)
279+
280+
self.assertEqual(dt.year, 2016)
281+
self.assertEqual(dt.month, 11)
282+
self.assertEqual(dt.day, 26)
283+
self.assertEqual(dt.hour, 0)
284+
self.assertEqual(dt.minute, 0)
285+
self.assertEqual(dt.second, 0)

0 commit comments

Comments
 (0)