["python","datetime","timezone","pytz"]
How to check if a datetime object is localized with pytz?

I want to store a datetime object with a localized UTC timezone. The method that stores the datetime object can be given a non-localized datetime (naive) object or an object that already has been localized. How do I determine if localization is needed? Code with missing if condition: class MyClass: def set_date(self, d): # what do i check here? # if(d.tzinfo): self.date = d.astimezone(pytz.utc) # else: self.date = pytz.utc.localize(d)
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).