如何在 golang 中使用 ozzo 验证进行时间最大验证
How to make time maximum validation with ozzo validation in golang
我想使用像 (23:30:00) 这样的格式时间输入最大时间,最大时间是 (09:30:00),我尝试使用 ozzo validation 进行验证,我找到了函数及其调用“日期(布局字符串)”
是文档https://github.com/go-ozzo/ozzo-validation
从文档中我看到函数 Date 有 Min 和 Max 来检查指定的范围,但问题是我不知道如何填充参数。数据类型为 time.Time.
这是我的代码
if err := validation.Validate(c.ReleasedTime, validation.Date("15:04:05").Max(????)); err != nil {
logger.E(err)
return shared.NewMultiStringValidationError(shared.HTTPErrorBadRequest, map[string]string{
"en": "Format date",
"id": "format tanggal",
})
}
从那里我填写最大参数“???”因为我仍然对如何填充它感到困惑。
也许你们都可以帮助我找到这个解决方案或使用另一个包进行验证,我将不胜感激。谢谢
测试代码中有例子
你可以在这里看到:https://github.com/go-ozzo/ozzo-validation/blob/master/date_test.go#L71
但是当我们只需要比较小时时,所以这里会有点hack。
import (
"fmt"
"time"
validation "github.com/go-ozzo/ozzo-validation/v4"
)
func main() {
layout := "2006-01-02T15:04:05"
// this add a base date to hour, so we have a valid time.Time object.
base := "2020-01-01"
max, _ := time.Parse(layout, base+"T"+"23:30:00")
fmt.Println(max)
r := validation.Date(layout).Max(max)
fmt.Println(r.Validate(base + "T" + "09:00:00")) // ok
fmt.Println(r.Validate(base + "T" + "23:40:00")) // this should raise error
}
我想使用像 (23:30:00) 这样的格式时间输入最大时间,最大时间是 (09:30:00),我尝试使用 ozzo validation 进行验证,我找到了函数及其调用“日期(布局字符串)”
是文档https://github.com/go-ozzo/ozzo-validation
从文档中我看到函数 Date 有 Min 和 Max 来检查指定的范围,但问题是我不知道如何填充参数。数据类型为 time.Time.
这是我的代码
if err := validation.Validate(c.ReleasedTime, validation.Date("15:04:05").Max(????)); err != nil {
logger.E(err)
return shared.NewMultiStringValidationError(shared.HTTPErrorBadRequest, map[string]string{
"en": "Format date",
"id": "format tanggal",
})
}
从那里我填写最大参数“???”因为我仍然对如何填充它感到困惑。 也许你们都可以帮助我找到这个解决方案或使用另一个包进行验证,我将不胜感激。谢谢
测试代码中有例子
你可以在这里看到:https://github.com/go-ozzo/ozzo-validation/blob/master/date_test.go#L71
但是当我们只需要比较小时时,所以这里会有点hack。
import (
"fmt"
"time"
validation "github.com/go-ozzo/ozzo-validation/v4"
)
func main() {
layout := "2006-01-02T15:04:05"
// this add a base date to hour, so we have a valid time.Time object.
base := "2020-01-01"
max, _ := time.Parse(layout, base+"T"+"23:30:00")
fmt.Println(max)
r := validation.Date(layout).Max(max)
fmt.Println(r.Validate(base + "T" + "09:00:00")) // ok
fmt.Println(r.Validate(base + "T" + "23:40:00")) // this should raise error
}