def determine_local_tzones
tabbs = (-6..5)
.collect { |i|
t = Time.now + i * 30 * 24 * 3600
"#{t.zone}_#{t.utc_offset}" }
.uniq
.sort
.join('|')
t = Time.now
twin = Time.local(t.year, 1, 1)
tsum = Time.local(t.year, 7, 1)
@tz_winter_summer ||= {}
@tz_winter_summer[tabbs] ||= tz_all
.select { |tz|
pw = tz.period_for_local(twin)
ps = tz.period_for_local(tsum)
tabbs ==
[ "#{pw.abbreviation}_#{pw.utc_total_offset}",
"#{ps.abbreviation}_#{ps.utc_total_offset}" ]
.uniq.sort.join('|') }
@tz_winter_summer[tabbs]
end