Get time zone information of the system in Python?

This should work:

import time
time.tzname

time.tzname returns a tuple of two strings: The first is the name of the local non-DST timezone, the second is the name of the local DST timezone.

Example return: ('MST', 'MDT')


I found this to work well:

import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()

For me this was able to differentiate between daylight savings and not.

From Python 3.6 you can do:

tz_string = datetime.datetime.now().astimezone().tzname()

Or

tz_string = datetime.datetime.now().astimezone().tzinfo

Reference with more detail: https://stackoverflow.com/a/39079819/4549682


Gives a UTC offset like in ThomasH's answer, but takes daylight savings into account.

>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9

The value of time.timezone or time.altzone is in seconds West of UTC (with areas East of UTC getting a negative value). This is the opposite to how we'd actually like it, hence the * -1.

time.localtime().tm_isdst will be zero if daylight savings is currently not in effect (although this may not be correct if an area has recently changed their daylight savings law).

EDIT: marr75 is correct, I've edited the answer accordingly.