2017-09-25 76 views
0

在注册期间,前端正在发送时区以及其他用户详细信息。我需要把一个验证器放在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 
} 

但我想用做这个工作对我来说是图书馆或什么的。如果你有任何问题,请告知。

+1

如果您可以控制前端,请参阅是否可以更改它以便它发送标准位置字符串,例如, “欧洲/柏林”。例如,对于住在德国的人来说,“格林威治标准时间+01:00欧洲中部时间”是错误的半年,这要归功于DST。 – Peter

回答

0

我不知道是否有这样的库,但你可以通过使用地图坚持数组优化代码,所以你不必遍历它。

_, ok := timeZones[timeZoneField] 
return ok 
1

您可能也许能够使用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