猿问

如何在 Go 中验证 hh:mma 时间格式?

我需要验证时间的时间格式是:hh:mma


例子:


09:00pm

09:00am

08:55pm

08:54am

1:00pm

我知道我需要为此使用 Go 的 regexp 包及其 MatchString 方法。但我无法弄清楚我需要传递给 MatchString 方法以实现我需要的模式。


我还搜索了一个可以使用的 Go 验证器包,而不是编写自己的验证器来验证时间格式,但我找不到适合我需要的。


眼眸繁星
浏览 321回答 2
2回答

婷婷同学_

这是一个以该格式验证 12 小时时间的正则表达式:^(0?[1-9]|1[012]):([0-5][0-9])[ap]m$Regex101 测试

慕雪6442864

这么晚了,但我想提出正则表达式之外的另一种解决方案。您可以使用 time 包来验证您的值,然后,如果需要,您可以稍后使用结果值。package mainimport (  "fmt"  "time")func main() {  Form := "3:04pm"  timesToCheck := []string{"7:54pm", "09:00pm", "09:00am", "08:55pm", "08:54am", "1:00pm", "23:00am"}  for _, v := range timesToCheck {    if t, e := time.Parse(Form, v); e != nil {      fmt.Println(e.Error())    } else {      fmt.Printf("%#v\n", t)    }  }}这将为您提供以下信息:time.Time{sec:-31550760, nsec:0, loc:(*time.Location)(0x1811e0)}time.Time{sec:-31546800, nsec:0, loc:(*time.Location)(0x1811e0)}time.Time{sec:-31590000, nsec:0, loc:(*time.Location)(0x1811e0)}time.Time{sec:-31547100, nsec:0, loc:(*time.Location)(0x1811e0)}time.Time{sec:-31590360, nsec:0, loc:(*time.Location)(0x1811e0)}time.Time{sec:-31575600, nsec:0, loc:(*time.Location)(0x1811e0)}parsing time "23:00am": hour out of range
随时随地看视频慕课网APP

相关分类

Go
我要回答