Skip to content

Commit e5c8b13

Browse files
committed
Fixes parsing of string with partial offset
1 parent 302518e commit e5c8b13

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

pendulum/pendulum.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,11 @@ def parse(cls, time=None, tz=pytz.UTC):
203203
raise PendulumException('Invalid time string "{}"'.format(time))
204204

205205
if dt.tzinfo:
206-
tz = int(dt.tzinfo.utcoffset(None).total_seconds() / 3600)
206+
offset = dt.tzinfo.utcoffset(dt)
207+
if not offset:
208+
offset = datetime.timedelta()
209+
210+
tz = offset.total_seconds() / 3600
207211

208212
return cls(
209213
dt.year, dt.month, dt.day,

tests/pendulum_tests/test_construct.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ def test_parse_with_offset_in_string(self):
4141
self.assertIsNone(p.timezone_name)
4242
self.assertEqual(-18000, p.offset)
4343

44+
def test_parse_with_partial_offset_in_string(self):
45+
p = Pendulum.parse('2016-04-15T18:21:08.7454873-00:30')
46+
self.assertPendulum(p, 2016, 4, 15, 18, 21, 8)
47+
self.assertIsNone(p.timezone_name)
48+
self.assertEqual(-1800, p.offset)
49+
4450
def test_setting_timezone(self):
4551
timezone = 'Europe/London'
4652
dtz = pytz.timezone(timezone)

0 commit comments

Comments
 (0)