Don't assume dst offset is 1 hour from std

Don't assume dst offset is 1 hour from standard time zone offset. Calculate the dst difference instead because it's possible dst may not be 1 hour from std.

Uses the technique by Eric Feliksik from http://lua-users.org/wiki/TimeZone .