为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
眼眸繁星 2022-01-17 10:31:39
我需要验证时间的时间格式是:hh:mma例子:09:00pm09:00am08:55pm08:54am1:00pm我知道我需要为此使用 Go 的 regexp 包及其 MatchString 方法。但我无法弄清楚我需要传递给 MatchString 方法以实现我需要的模式。我还搜索了一个可以使用的 Go 验证器包,而不是编写自己的验证器来验证时间格式,但我找不到适合我需要的。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

这是一个以该格式验证 12 小时时间的正则表达式:

^(0?[1-9]|1[012]):([0-5][0-9])[ap]m$

Regex101 测试


查看完整回答
反对 回复 2022-01-17
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

这么晚了,但我想提出正则表达式之外的另一种解决方案。您可以使用 time 包来验证您的值,然后,如果需要,您可以稍后使用结果值。


package main


import (


  "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


查看完整回答
反对 回复 2022-01-17
  • 2 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号