My guess is that the OP is parsing dates that have a numerical TZ offset (like most date formats found in internet protocols like http or email headers). But there's really no substitute for just calling
On Thu, Dec 10, 2015 at 5:20 PM, Alexander Belopolsky < firstname.lastname@example.org> wrote:
On Thu, Dec 10, 2015 at 8:09 PM, Guido van Rossum email@example.com wrote:
The reason that timezone() takes a timedelta is to avoid mistakes in the units.
That was more or less the original reasoning. Note that an early prototype required the offset to be specified in minutes. 
I don't expect people to have to construct timezone objects "by hand". You would normally get tzinfo populated with a local timezone by calling .astimezone() on a UTC instance:
from datetime import * dt = datetime.now(timezone.utc) print(dt.astimezone())