首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >golang中的RFC3339时间解析

golang中的RFC3339时间解析
EN

Stack Overflow用户
提问于 2016-06-21 01:31:38
回答 2查看 23.3K关注 0票数 4

我正在从数据库中提取时间戳,它使用的是RFC3339格式,但是缺少时区。因此,当我尝试比较时间戳时,它将关闭。如何将dbtime更改为东部时间?

代码语言:javascript
复制
// time format
const
(
    RFC3339     = "2006-01-02T15:04:05Z07:00"
)

//now time
now := time.Now()
nowtime := now.Unix()

fmt.Println("Nowtime:", nowtime)
fmt.Println("Now:", now)

//time in db
fmt.Println("Dbtime string:", dbtime)
udbtime, err := time.Parse.EST(RFC3339,dbtime)
fmt.Println("RFC3339: " + RFC3339)
fmt.Println("dbtime parsed", udbtime)
fmt.Println("dbtime parsed unixtime", udbtime.Unix())

我的输出是

代码语言:javascript
复制
Nowtime: 1466443640
Now: 2016-06-20 13:27:20.963232824 -0400 EDT
Dbtime string: 2016-06-20T12:41:45.14Z
RFC3339: 2006-01-02T15:04:05Z07:00
dbtime parsed 2016-06-20 12:41:45.14 +0000 UTC
dbtime parsed unixtime 1466426505
EN

回答 2

Stack Overflow用户

发布于 2016-06-21 02:21:20

您可以使用定义的time.RFC3339解析时间戳,如您所示,并在事后通过添加UTC偏移量来调整它们,以便它们在UTC中是正确的。

代码语言:javascript
复制
udbtime = udbtime.Add(4*time.Hour)

但是,这要求您检查每次落入EST还是EDT以添加正确的偏移量,除非您可以假设它们都是EDT。

更好的方法是使用您自己的时间格式,不带特定的TZ偏移量(Z不是解析时间规范的一部分),并用time.ParseInLocation解析它。

通过这种方式,您可以根据时间是在美国东部夏令时还是美国东部夏令时来说明正确的偏移量。

https://play.golang.org/p/IrUnTwvlkk

代码语言:javascript
复制
RFC3339local := "2006-01-02T15:04:05Z"

loc, err := time.LoadLocation("America/New_York")
if err != nil {
    log.Fatal(err)
}

ts1 := "2016-06-20T12:41:45.14Z"
t1, _ := time.ParseInLocation(RFC3339local, ts1, loc)
fmt.Println(t1)
// prints: 2016-06-20 12:41:45.14 -0400 EDT

ts2 := "2016-01-20T12:41:45.14Z"
t2, _ = time.ParseInLocation(RFC3339local, ts2, loc)
fmt.Println(t2)
// prints: 2016-01-20 12:41:45.14 -0500 EST
票数 2
EN

Stack Overflow用户

发布于 2021-02-09 14:06:13

您可以尝试go-carbon,这是一个简单的、语义的、开发者友好的datetime包

代码语言:javascript
复制
carbon.Parse("2020-12-31").ToRfc3339String() 
//  output
2020-12-31T00:00:00+08:00

https://github.com/golang-module/carbon

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37928492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档