我想验证来自golang前端的后端时区
问题描述:
在注册期间,前端正在发送时区以及其他用户详细信息。我需要把一个验证器放在api测试的时区上。 在时区中的数据的格式为:我想验证来自golang前端的后端时区
(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
}
但我想用做这个工作对我来说是图书馆或什么的。如果你有任何问题,请告知。
答
我不知道是否有这样的库,但你可以通过使用地图坚持数组优化代码,所以你不必遍历它。
_, ok := timeZones[timeZoneField]
return ok
答
您可能也许能够使用time.LoadLocation
。
func LoadLocation(name string) (*Location, error)
您可以传递一个字符串,如“America/New_York”,错误返回应该告诉你它是否有效。
请注意,格式将与您目前的格式不同。检出https://www.iana.org/time-zones
+0
请参阅['time.ParseInLocation'](https://golang.org/pkg/time/#ParseInLocation)。 – kostix
如果您可以控制前端,请参阅是否可以更改它以便它发送标准位置字符串,例如, “欧洲/柏林”。例如,对于住在德国的人来说,“格林威治标准时间+01:00欧洲中部时间”是错误的半年,这要归功于DST。 – Peter