BUG: Moved asserts back to before calculations that rely on them.

This means we get a failed assert immediately, instead of an
OverflowError later.
MAINT: Using zone attribute of tzinfo instead of string