How do I determine if localization is needed?
From datetime docs:
-
a datetime object
dis aware iff:d.tzinfo is not None and d.tzinfo.utcoffset(d) is not None -
dis naive iff:d.tzinfo is None or d.tzinfo.utcoffset(d) is None
Though if d is a datetime object representing time in UTC timezone then you could use in both cases:
self.date = d.replace(tzinfo=pytz.utc)
It works regardless d is timezone-aware or naive.
Note: don’t use datetime.replace() method with a timezone with a non-fixed utc offset (it is ok to use it with UTC timezone but otherwise you should use tz.localize() method).