oracle 时间 unixtimr,go - 如何将unix时间戳解析为time.Tim

go - 如何将unix时间戳解析为time.Tim

我正在尝试解析Unix时间戳,但是我超出了范围错误。 这对我来说没有意义,因为布局是正确的(如Go文档中所示):

package main

import "fmt"

import "time"

func main() {

tm, err := time.Parse("1136239445", "1405544146")

if err != nil{

panic(err)

}

fmt.Println(tm)

}

操场

6个解决方案

131 votes

strconv.Atoi函数不执行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以避免32位系统上的int溢出。

ANisus answered 2019-05-20T16:56:07Z

2 votes

你可以直接使用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

入住游乐场:[https://play.golang.org/p/5FtRdnkxAd]

negi Yogi answered 2019-05-20T16:56:48Z

2 votes

共享我为日期创建的一些函数:

请注意,我想获得特定位置的时间(而不仅仅是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")

}

Adi answered 2019-05-20T16:57:24Z

0 votes

检查这个回购:[https://github.com/araddon/dateparse]

您可以使用

t, err := dateparse.ParseAny(timestampString)

Rujoota Shah answered 2019-05-20T16:57:52Z

0 votes

根据go文档,Unix返回本地时间。

Unix返回与给定Unix时间对应的本地时间

这意味着输出将取决于您的代码运行的机器,这通常是您所需要的,但有时,您可能希望获得UTC的值。

为此,我调整了片段,使其返回UTC时间:

i, err := strconv.ParseInt("1405544146", 10, 64)

if err != nil {

panic(err)

}

tm := time.Unix(i, 0)

fmt.Println(tm.UTC())

这打印在我的机器上(在CEST中)

2014-07-16 20:55:46 +0000 UTC

Thib-o answered 2019-05-20T16:58:50Z

-2 votes

只需使用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上的工作示例。

okhrypko answered 2019-05-20T16:59:25Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值