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

找不到输入时间的格式

找不到输入时间的格式

Go
烙印99 2022-05-18 09:43:57
我正在创建一个 Go 应用程序,用户可以在其中输入任何格式的时间,如下所示:Default Layout:  2009-11-10 23:00:00 +0000 UTC m=+0.000000001US Layout:       November 10, 2009ISO Layout:      2020-02-10UNIX Time:       1581422196084有没有办法找出输入时间的格式?我唯一能找到的是如何将时间从一种格式转换为另一种格式,但是找不到现有的时间格式。我能想到的一种可能方法是为所有时间格式添加一个正则表达式。但是,在实现它之前,我想确保没有 Go 方法。
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以决定 Go 布局中需要支持哪些布局 ( https://programming.guide/go/format-parse-string-time-date-example.html ):


    ANSIC       = "Mon Jan _2 15:04:05 2006"

    UnixDate    = "Mon Jan _2 15:04:05 MST 2006"

    RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"

    RFC822      = "02 Jan 06 15:04 MST"

    RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone

    RFC850      = "Monday, 02-Jan-06 15:04:05 MST"

    RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"

    RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone

    RFC3339     = "2006-01-02T15:04:05Z07:00"

    RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

    Kitchen     = "3:04PM"

    // Handy time stamps.

    Stamp      = "Jan _2 15:04:05"

    StampMilli = "Jan _2 15:04:05.000"

    StampMicro = "Jan _2 15:04:05.000000"

    StampNano  = "Jan _2 15:04:05.000000000"

还有一个函数叫做:time.Parse(layout, value string) (Time, error) 如果输入时间不支持布局,error 不为零


比如说,我想支持 ANSIC 和 UnixDate,我可以执行以下操作:


t, err := time.Parse(time.ANSIC, inputTime)

if err == nil {

return t

}


t, err = time.Parse(time.UnixDate, inputTime)

if err == nil {

return t

}

显然,代码结构中的一些代码优化可以在这里完成,但这将比使用正则表达式更有效。


希望这可以帮助。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信