# File lib/et-orbi/zone_aliases.rb, line 13
  def self.unzz(name)

    m = name.match(/\A([A-Z]{3,4})([+-])(\d{1,2}):?(\d{2})?\z/)
    return nil unless m

    abbs = [ m[1] ]; a = m[1]
    abbs << "#{a}T" if a.size < 4

    off = (m[2] == '+' ? 1 : -1) * (m[3].to_i * 3600 + (m[4] || '0').to_i * 60)

    t = Time.now
    twin = Time.utc(t.year, 1, 1) # winter
    tsum = Time.utc(t.year, 7, 1) # summer

    (@tz_all ||= ::TZInfo::Timezone.all)
      .each { |tz|
        abbs.each { |abb|
          per = tz.period_for_utc(twin)
          return tz.name \
            if per.abbreviation.to_s == abb && per.utc_total_offset == off
          per = tz.period_for_utc(tsum)
          return tz.name \
            if per.abbreviation.to_s == abb && per.utc_total_offset == off } }

    nil
  end