我想验证来自Golang前端的后端的时区

时间:2017-09-25 08:15:00

标签: validation go timezone

前端在注册期间发送时区以及其他用户详细信息。我需要在时区上放置验证器进行api测试。 时区中的数据格式为:

(GMT-10:00) Hawaii
(GMT-08:00) Pacific Time (US & Canada)

我所做的是定义数组中的所有时区,然后搜索接收的时区。如果它存在然后确定否则返回错误。我的职责是:

func timeZoneValidator(field validator.FieldLevel) bool {
    if field.Field().Kind() != reflect.String {
        return false
    }
    timeZoneField := field.Field().String()

    for i:= range timeZones {
        if timeZones[i] == timeZoneField {
            // Found!
            return true
        }
    }
    return false
}

但是我想使用一个库或者为我做这个任务的东西。如果你有,请告知。

2 个答案:

答案 0 :(得分:2)

您可以使用time.LoadLocation

func LoadLocation(name string) (*Location, error)

您可以传入一个字符串,例如“America / New_York”,错误返回应告诉您它是否有效。

请注意,格式与您目前的格式不同。查看https://www.iana.org/time-zones

答案 1 :(得分:0)

我不知道是否有这样的库,但您可以使用数组的地图来优化代码,因此您不必迭代它。

_, ok := timeZones[timeZoneField]
return ok