Answers:
该time.Parse
函数不执行Unix时间戳。相反,您可以使用strconv.ParseInt
来解析字符串,int64
并使用创建时间戳time.Unix
:
package main
import (
"fmt"
"time"
"strconv"
)
func main() {
i, err := strconv.ParseInt("1405544146", 10, 64)
if err != nil {
panic(err)
}
tm := time.Unix(i, 0)
fmt.Println(tm)
}
输出:
2014-07-16 20:55:46 +0000 UTC
操场: http //play.golang.org/p/v_j6UIro7a
编辑:
从更改为strconv.Atoi
,strconv.ParseInt
以避免int在32位系统上溢出。
strconv.ParseUint
改用负数不是更好吗?
func Unix(sec int64, nsec int64) Time
接收int64
值。同样,秒的负数是很有意义的-它们描述了1970年之前的日期!:)至于nsec
,负值意味着从秒中删除那么多纳秒。
您可以直接使用time.Unix的时间函数,将Unix时间戳转换为UTC
package main
import (
"fmt"
"time"
)
func main() {
unixTimeUTC:=time.Unix(1405544146, 0) //gives unix time stamp in utc
unitTimeInRFC3339 :=unixTimeUTC.Format(time.RFC3339) // converts utc time to RFC3339 format
fmt.Println("unix time stamp in UTC :--->",unixTimeUTC)
fmt.Println("unix time stamp in unitTimeInRFC3339 format :->",unitTimeInRFC3339)
}
输出量
unix time stamp in UTC :---> 2014-07-16 20:55:46 +0000 UTC
unix time stamp in unitTimeInRFC3339 format :----> 2014-07-16T20:55:46Z
签入Go Playground:https://play.golang.org/p/5FtRdnkxAd
共享我为日期创建的一些功能:
请注意,我想获取特定位置的时间(而不仅仅是UTC时间)。如果要使用UTC时间,只需删除loc变量和.In(loc)函数调用即可。
func GetTimeStamp() string {
loc, _ := time.LoadLocation("America/Los_Angeles")
t := time.Now().In(loc)
return t.Format("20060102150405")
}
func GetTodaysDate() string {
loc, _ := time.LoadLocation("America/Los_Angeles")
current_time := time.Now().In(loc)
return current_time.Format("2006-01-02")
}
func GetTodaysDateTime() string {
loc, _ := time.LoadLocation("America/Los_Angeles")
current_time := time.Now().In(loc)
return current_time.Format("2006-01-02 15:04:05")
}
func GetTodaysDateTimeFormatted() string {
loc, _ := time.LoadLocation("America/Los_Angeles")
current_time := time.Now().In(loc)
return current_time.Format("Jan 2, 2006 at 3:04 PM")
}
func GetTimeStampFromDate(dtformat string) string {
form := "Jan 2, 2006 at 3:04 PM"
t2, _ := time.Parse(form, dtformat)
return t2.Format("20060102150405")
}
.In(loc)
给了我时间-0400 EDT
。替换为它.In(time.UTC)
给了我UTC时间。
只需使用time.Parse
例:
package main
import (
"fmt"
"time"
)
func main() {
fromString := "Wed, 6 Sep 2017 10:43:01 +0300"
t, e := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700", fromString)
if e != nil {
fmt.Printf("err: %s\n", e)
}
fmt.Printf("UTC time: %v\n", t.UTC())
}
在play.golang.org上的工作示例。