Date 解析UTC日期字符串并转换为不同格式
到这里来 我有一个日期字符串Date 解析UTC日期字符串并转换为不同格式,date,go,Date,Go,到这里来 我有一个日期字符串2018-06-07T16:16:57Z,我想把它转换成这样的mm/dd/yyyy hh:mm 这似乎是一个经常被问到的问题,但我似乎找不到任何以前适合我的问题 我在一个时间域中阅读,并试图像这样转换 time := row["Date & Time"] fmt.Println(time) t, _ := time.Parse("2006-01-02 15:04:05 -0700 UTC", time) fmt.Println(t) 但我认为问题在于我没有正
2018-06-07T16:16:57Z
,我想把它转换成这样的mm/dd/yyyy hh:mm
这似乎是一个经常被问到的问题,但我似乎找不到任何以前适合我的问题
我在一个时间域中阅读,并试图像这样转换
time := row["Date & Time"]
fmt.Println(time)
t, _ := time.Parse("2006-01-02 15:04:05 -0700 UTC", time)
fmt.Println(t)
但我认为问题在于我没有正确的格式字符串。我尝试了一些资源,但没有成功
当我按原样打印t
时,我得到0001-01-01 00:00:00+0000 UTC
,这显然是不正确的
我想做的是这样转换我阅读的时间
newTime:=currentDate.Format(“01/02/2006 hh:mm”)
如@mkopriva所述,布局应匹配。了解布局,即2006-01-02T15:04:05Z
,查看layout
用于将字符串转换为日期
Parse解析格式化的字符串并返回它的时间值
代表。布局通过显示引用的方式定义格式
时间,定义为
然后使用返回的时间值根据您的要求格式化日期
package main
import (
"fmt"
"time"
)
func main() {
layout1 := "2006-01-02T15:04:05Z"
t, err := time.Parse(layout1, "2018-06-07T16:16:57Z")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t.Format("01/02/2006 15:04"))
}
检查一下你有两个问题
首先,不应将变量命名为time
,因为这是内置包的名称。我想你知道,这只是一个复制粘贴错误
接下来,传递给的字符串是一个格式字符串,它应该描述数据库中时间字符串的格式。您已经知道格式是什么:2018-06-07T16:16:57Z
,因此只需使用该格式将值替换为
以下是工作变量:
package main
import (
"fmt"
"time"
)
func main() {
tm := "2018-06-07T16:16:57Z"
fmt.Println(tm)
t, err := time.Parse("2006-01-02T15:04:05Z", tm)
if err != nil {
panic(err)
}
fmt.Println(t)
}
此外,数据库使用的时间格式通常被描述为RFC3339,它在Go中也可用作
time.rfc339
常量
因此,使用它可以进一步简化代码:
package main
import (
"fmt"
"time"
)
func main() {
tm := "2018-06-07T16:16:57Z"
fmt.Println(tm)
t, err := time.Parse(time.RFC3339, tm)
if err != nil {
panic(err)
}
fmt.Println(t)
}
如果愿意,还可以让数据库驱动程序将时间扫描为
time.time
变量,从而为您转换时间
例如:
var tm time.Time
if err = row.Scan(&tm); err != nil {
panic(err)
}
fmt.Print(tm)
如果日期字符串没有空格,请确保格式字符串也没有空格。类似于
time.Parse(“2006-01-02T15:04:05Z”,time)
的内容可能是?您没有检查从time.Parse返回的错误。如果您这样做了,您会发现它的两个参数的格式必须匹配。此“2006-01-02 15:04:05-0700 UTC”
的格式与“2018-06-07T16:16:57Z”
不匹配。
var tm time.Time
if err = row.Scan(&tm); err != nil {
panic(err)
}
fmt.Print(tm)