Timezone#strftime("%s", time) converts the given time to UNIX time. Because UNIX time is the number of seconds that have elapsed since 1970-01-01 00:00:00 (UTC), the result does not depends on the timezone.
However, the result of the folloing code seems incorrect.
%s was being deferred to the result of the conversion to local. This is
actually a UTC instance being used to represent local time, so the
result would be the number of seconds since the epoch plus the total UTC
Override the handling of %s and use the passed in UTC instance to
calculate the value.
This is already resolved in the upcoming version 2.0.0 release (currently on the master branch).
For earlier versions of TZInfo, this is a consequence of returning UTC instances of Time and DateTime to represent local times in order to support Ruby versions older than 1.9.3 (that can only handle times in the local system time zone and UTC).
I've committed a change to the 1.2 branch to make Timezone#strftime return the correct number of seconds since the epoch for the %s directive.