登录
首页 >  Golang >  Go问答

Go 语言中验证日期时间格式 "2022-01-14T20:56:55Z" 的有效性

来源:stackoverflow

时间:2024-02-11 09:27:24 489浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Go 语言中验证日期时间格式 "2022-01-14T20:56:55Z" 的有效性》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我正在尝试创建一个函数来告诉我时间戳是否有效。

我的函数看起来像

// IsTimestamp checks if a string contains a timestamp.
func IsTimestamp(str string) bool {
    _, err := time.Parse("2006-01-02 15:04:05.999", str)
    if err != nil {
        return false
    }

    return true
}

但是,传入 2022-01-14t20:56:55z 当它是有效时间戳时返回 false。

我认为这可能与我在 time.parse 中使用的布局有关,但我尝试过只使用日期,但没有成功。


正确答案


您的布局与您的输入字符串不匹配,因此预计无法成功解析。

docs 说:

parse 解析格式化字符串并返回它表示的时间值。请参阅名为 layout 的常量的文档,了解如何表示格式。第二个参数必须可以使用第一个参数提供的格式字符串(布局)进行解析。

因此,您应该使用与您的输入相匹配的布局。下面,我使用 RFC3339,这是您的输入字符串的布局。

if _, err := time.Parse(time.RFC3339, str); err != nil {
    ...
}

https://go.dev/play/p/_Q26NS2wwfy

2022-01-14t20:56:55z 与布局 2006-01-02 15:04:05.999 不匹配,因为:

  • 布局需要一天之后的空白,而不是 t
  • 布局需要精确的三位数字表示毫秒(仅给出两位 55
  • 布局不需要指定时区。 z 无效。

您可以将 2022-01-14t20:56:55z 与布局 2006-01-02t15:04:05.99z2006-01-02t15:04:05z 匹配。或者更好的是,使用 The Fool's answer

今天关于《Go 语言中验证日期时间格式 "2022-01-14T20:56:55Z" 的有效性》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>