How to check if a datetime object is localized with pytz?
if you want to check if a datetime object 'd' is localized, check the d.tzinfo, if it is None, no localization.
How do I determine if localization is needed?
From datetime
docs:
a datetime object
d
is aware iff:d.tzinfo is not None and d.tzinfo.utcoffset(d) is not None
d
is 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).
Here is a function wrapping up the top answer.
def tz_aware(dt):
return dt.tzinfo is not None and dt.tzinfo.utcoffset(dt) is not None