2017-09-25 79 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