Go语言 将时间戳和时区转换为RFC3339格式

wribegjk  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(194)

我从用户那里获取时间戳,如下所示

2015-05-28T17:00:00

和时区"America/Los_Angeles"现在我想把日期转换成

2015-05-28T17:00:00-07:00

这是可能的去,请帮助我在这一点,如果你有任何链接,你可以分享

ycl3bljg

ycl3bljg1#

您可以使用ParseInLocation解析特定位置中的日期时间。

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, err := time.LoadLocation("America/Los_Angeles")
    if err != nil {
        panic(err)
    }

    // Note: without explicit zone, returns time in given location.
    const shortForm = "2015-05-28T17:00:00"
    t, err := time.ParseInLocation("2006-01-02T15:04:05", shortForm, loc)
    if err != nil {
        panic(err)
    }
    fmt.Println(t)
}

其输出为:

2015-05-28 17:00:00 -0700 PDT
4ioopgfo

4ioopgfo2#

“timezone”在go中翻译为time.Location。要按名称加载位置:

loc, err := time.LoadLocation("America/Los_Angeles")

正在剖析:

  • 将字符串解释为“该位置中的时间戳”:
t, err := time.ParseInLocation("2006-01-02T15:04:05", input, loc)
  • 将字符串解释为“该时间戳(UTC)”:
t, err := time.Parse("2006-01-02T15:04:05", input)

格式设定:
要根据RFC3339:

fmt.Println(t.Format(time.RFC3339))

t带有自己的时间.位置,您还可以将该时间戳转换为您认为合适的时区:

fmt.Println(t.In(loc).Format(time.RFC3339))
fmt.Println(t.UTC().Format(time.RFC3339))

https://go.dev/play/p/g2BgfdYGxU_I

相关问题