datetime.astimezone(tz=None)
Return a datetime
object with new tzinfo
attribute tz, adjusting the date and time data so the result is the same UTC time as self, but in tz‘s local time.
If provided, tz must be an instance of a tzinfo
subclass, and its utcoffset()
and dst()
methods must not return None
. self must be aware (self.tzinfo
must not be None
, and self.utcoffset()
must not return None
).
If called without arguments (or with tz=None
) the system local timezone is assumed. The .tzinfo
attribute of the converted datetime instance will be set to an instance of timezone
with the zone name and offset obtained from the OS.
If self.tzinfo
is tz, self.astimezone(tz)
is equal to self: no adjustment of date or time data is performed. Else the result is local time in time zone tz, representing the same UTC time as self: after astz = dt.astimezone(tz)
, astz - astz.utcoffset()
will usually have the same date and time data as dt - dt.utcoffset()
. The discussion of class tzinfo
explains the cases at Daylight Saving Time transition boundaries where this cannot be achieved (an issue only if tz models both standard and daylight time).
If you merely want to attach a time zone object tz to a datetime dt without adjustment of date and time data, use dt.replace(tzinfo=tz)
. If you merely want to remove the time zone object from an aware datetime dt without conversion of date and time data, use dt.replace(tzinfo=None)
.
Note that the default tzinfo.fromutc()
method can be overridden in a tzinfo
subclass to affect the result returned by astimezone()
. Ignoring error cases, astimezone()
acts like:
def astimezone(self, tz): if self.tzinfo is tz: return self # Convert self to UTC, and attach the new time zone object. utc = (self - self.utcoffset()).replace(tzinfo=tz) # Convert from UTC to tz's local time. return tz.fromutc(utc)
Changed in version 3.3: tz now can be omitted.
Please login to continue.