func GetTimezonesForPrefix()

in phonenumbers.go [3377:3406]


func GetTimezonesForPrefix(number string) ([]string, error) {
	var err error
	timezoneOnce.Do(func() {
		timezoneMap, err = loadIntStringArrayMap(gen.TimezoneData)
	})

	if timezoneMap == nil {
		return nil, fmt.Errorf("error loading timezone map: %v", err)
	}

	// strip any leading +
	number = strings.TrimLeft(number, "+")

	matchLength := len(number) // maxLength: min( len(number), timezoneMap.MaxLength )
	if matchLength > timezoneMap.MaxLength {
		matchLength = timezoneMap.MaxLength
	}

	for i := matchLength; i > 0; i-- {
		index, err := strconv.Atoi(number[0:i])
		if err != nil {
			return nil, err
		}
		tzs, found := timezoneMap.Map[index]
		if found {
			return tzs, nil
		}
	}
	return []string{UNKNOWN_TIMEZONE}, nil
}