backend - 如何在golang中使用ozzo validation使时间最大validation

我想以格式时间(23:30:00)为时间的最大输入,最大时间为(09:30:00),我尝试了 validation 使用 ozzo validation 并且我找到了函数和它的调用“Date(布局字符串)”

它是文档 https://github.com/go-ozzo/ozzo-validation

从文档中我看到函数 Date 有 Min 和 Max 来检查指定的范围,但问题是我不知道如何填充参数。数据类型是时间.时间。

这是我的代码

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",
    })
}

从那里我填写最大参数“???”因为我仍然困惑如何填充它。也许你们都可以帮助我找到这个解决方案或使用另一个包制作这个 validation ,我将不胜感激。谢谢

回答1

测试代码中有一个示例。

你可以在这里看到它:https://github.com/go-ozzo/ozzo-validation/blob/master/date_test.go#L71

但是当我们只需要比较小时时,这里会有点小技巧。

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
}

相似文章

go - 为什么 Go 找不到这些源文件?

我正在尝试在树莓派上编译https://github.com/GoogleContainerTools/kaniko.git。我不在golang中编程,但几周前我能够在同一个树莓派上成功编译kanik...

最新文章