前端在注册期间发送时区以及其他用户详细信息。我需要在时区上放置验证器进行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
}
但是我想使用一个库或者为我做这个任务的东西。如果你有,请告知。
答案 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