代码笔记 | 📅 2020-09-09 | golang
使用 time.Parse
方法,对时间字符串进行解析,返回 time.Time
对象。
第一个参数是 时间格式化字符串,即 format.go 中定义的这些内容:
const (
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"
)
第一个参数取什么格式,应根据第二个参数,也就是被解析的时间字符串决定。
第二个参数是将要被解析的时间字符串。如:"2019-11-27 00:00:00"
(二零一九年十一月二十七日零点)
其对应的时间格式化字符串就是:"2006-01-02 15:04:05"
timeString := "2019-11-27 00:00:00"
parsedTime, err := time.Parse("2006-01-02 15:04:05", timeString)
if err != nil {
log.Printf("Parse time error: %+v", err)
}
fmt.Printf("parsedTime: %+v\n", parsedTime)
上述代码,我们将得到输出:parsedTime: 2019-11-27 00:00:00 +0000 UTC
上述操作都是在默认的 UTC
时区进行的,倘若你并非处于 UTC
时区,则不应该使用time.Parse
方法。
针对不同时区,time
包提供了 ParseInLocation
方法,指定 time.Location
进行时间解析。
用法如下:
timeString := "2019-11-27 00:00:00"
parsedTimeInLocation, err := time.ParseInLocation("2006-01-02 15:04:05", timeString, time.Local) // 注意此处不同
if err != nil {
log.Printf("Parse time error: %+v", err)
}
fmt.Printf("parsedTimeInLocation: %+v\n", parsedTimeInLocation)
此时,我们得到输出:parsedTimeInLocation: 2019-11-27 00:00:00 +0800 CST