Golang time.Parse() 函数及示例
在Golang中,time包提供了许多操作时间的功能,其中 time.Parse() 函数是一个常用的函数,用于将字符串格式的时间转换为 time.Time 类型。
time.Parse() 函数的语法如下:
func Parse(layout, value string) (Time, error)
其中,layout 是时间的格式,value 是要转换的字符串。该函数返回 time.Time 类型和一个 error 类型。如果转换成功,error 为 nil。
我们使用一些例子来讲解 time.Parse() 函数。下面是一些比较常用的时间格式:
代码 | 描述 | 示例 |
---|---|---|
2006-01-02T15:04:05Z |
ISO8601 UTC 时间 | 2021-08-16T08:30:45Z |
2006-01-02T15:04:05-07:00 |
ISO8601 时区时间 | 2021-08-16T08:30:45-07:00 |
2006-01-02 15:04:05.000 |
带毫秒的时间 | 2021-08-16 08:30:45.123 |
Jan 2, 2006 at 3:04p (MST) |
常见格式的时间显示 | Aug 16, 2021 at 8:30am (PST) |
示例1:将字符串解析为 time.Time 类型
下面的示例中,我们将使用 time.Parse() 函数将字符串格式的时间解析为 time.Time 类型的值。
package main
import (
"fmt"
"time"
)
func main() {
layout := "2006-01-02T15:04:05Z"
str := "2021-08-16T08:30:45Z"
t, err := time.Parse(layout, str)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
}
以上代码的执行结果:
2021-08-16 08:30:45 +0000 UTC
示例2:将带时区的字符串解析为本地时间
下面的示例中,我们将使用 time.Parse() 函数将带时区的字符串解析为本地时间。
package main
import (
"fmt"
"time"
)
func main() {
layout := "2006-01-02T15:04:05-07:00"
str := "2021-08-16T08:30:45-07:00"
t, err := time.Parse(layout, str)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
}
以上代码的执行结果:
2021-08-16 08:30:45 -0700 PST
示例3:将带毫秒的字符串解析为时间
下面的示例中,我们将使用 time.Parse() 函数将带毫秒的字符串解析为时间。
package main
import (
"fmt"
"time"
)
func main() {
layout := "2006-01-02 15:04:05.000"
str := "2021-08-16 08:30:45.123"
t, err := time.Parse(layout, str)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
}
以上代码的执行结果:
2021-08-16 08:30:45.123 +0000 UTC
示例4:将常见格式的时间显示转换为时间
下面的示例中,我们将使用 time.Parse() 函数将常见格式的时间显示转换为时间。
package main
import (
"fmt"
"time"
)
func main() {
layout := "Jan 2, 2006 at 3:04p (MST)"
str := "Aug 16, 2021 at 8:30am (PST)"
t, err := time.Parse(layout, str)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
}
以上代码的执行结果:
2021-08-16 08:30:00 -0700 PST
结论
time.Parse() 函数是一个非常实用的函数,可以将字符串格式的时间转换为 time.Time 类型。在使用时需要注意时间格式的符号和顺序,可以根据需要自定义时间格式。