返回介绍

03.7.2 解析时间的代码示例

发布于 2024-08-14 12:50:32 字数 3908 浏览 0 评论 0 收藏 0

本节将介绍parseTime.go,这段代码接收一个命令行参数,并将其由string类型转换成time类型。该代码分为三部分,仅是为了演示time.Parse(),可能会因为你的输入格式不正确而报错。

第一部分:

> package main
> 
> import (
>    "fmt"
>    "os"
>    "path/filepath"
>    "time"
> )

第二部分:

> func main() {
>    var myTime string
> 
>    if len(os.Args) != 2 {
>       fmt.Printf("Usage: %s string\n",
>          filepath.Base(os.Args[0]))
>       os.Exit(0)
>    }
> 
>    myTime = os.Args[1]

最后一部分是展现神奇的代码:

> d,err := time.Parse("15:04",myTime)
>    if err == nil {
>       fmt.Println("Full",d)
>       fmt.Println("Time", d.Hour(), d.Minute())
>    } else {
>       fmt.Println(err)
>    }
> }

可以看到,为了解析一个包含小时和分钟的字符串,你需要使用常量来构建格式"15:04"。返回值err能够告诉你我们的解析是否成功。

执行parseTime.go后我们得到:

$ go run parseTime.go

usage: parseTime string

exit status 1

$ go run parseTime.go 12:10

Full 0000-01-01 12:10:00 +0000 UTC Time 12 10

可以看到Go将整个时间(Full 0000-01-01 12:10:00 +0000 UTC)都打印出来了,这是因为time.Parse()返回值是时间类型的变量。如果你只关心具体时间而不是日期,你应该只打印你关心的time变量部分。

如果你没有按照Go规定的时间常量来格式化你的字符串,例如使用22:04作为第一个参数,你就会得到下面的错误信息:

$ go run parseTime.go

parsing time "12:10" as "22:04" : cannot parse ":10" as "2"

或者,如果你使用了用来处理月份的11来格式化,可能得到下面的错误信息:

$ go run parseTime.go 12:10

parsing time "12:10": month out of range

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文