Skip to content

Commit 00938ad

Browse files
committed
Makes passing a naive datetime to instance() default to UTC
1 parent a96761d commit 00938ad

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pendulum/pendulum.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def instance(cls, dt):
175175
return cls(
176176
dt.year, dt.month, dt.day,
177177
dt.hour, dt.minute, dt.second, dt.microsecond,
178-
tzinfo=dt.tzinfo
178+
tzinfo=dt.tzinfo or pytz.UTC
179179
)
180180

181181
@classmethod
@@ -188,7 +188,7 @@ def parse(cls, time=None, tz=pytz.UTC):
188188
189189
:param tz: The timezone
190190
:type tz: BaseTzInfo or str or None
191-
191+
q
192192
:rtype: Pendulum
193193
"""
194194
if time is None:

tests/pendulum_tests/test_construct.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,11 @@ def test_yesterday(self):
105105
yesterday = Pendulum.yesterday()
106106
self.assertIsInstanceOfPendulum(yesterday)
107107
self.assertEqual(-1, now.diff(yesterday, False).in_days())
108+
109+
def test_instance_naive_datetime_defaults_to_utc(self):
110+
now = Pendulum.instance(datetime.now())
111+
self.assertEqual('UTC', now.timezone_name)
112+
113+
def test_instance_timezone_aware_datetime(self):
114+
now = Pendulum.instance(datetime.now(pytz.timezone('Europe/Paris')))
115+
self.assertEqual('Europe/Paris', now.timezone_name)

0 commit comments

Comments
 (0)