登录
首页 >  Golang >  Go问答

在 Go 中将时区解析为 Location 结构

来源:Golang技术栈

时间:2023-04-12 18:05:31 136浏览 收藏

哈喽!今天心血来潮给大家带来了《在 Go 中将时区解析为 Location 结构》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到golang,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

给定一个时区,例如 EDT 或 CEST,有没有办法获得time.Location使用它的参考func (t Time) In(loc *Location) Time

可以初始化例如 CEST 的位置,time.LoadLocation("Europe/Berlin")但如何为实际时区表示法做同样的事情?

鉴于@Svip 非常有见地的评论,是否有任何明智的方式来返回代表位置列表?那是为了WET回报,例如[Europe/London, Atlantik/Reykjav铆k]。所有其他WET位置将遵循与这两个位置之一相同的时区安排。

正确答案

可以选择解析给定位置的时间。(https://golang.org/pkg/time/#LoadLocation

type CustomTime struct {
    time.Time
}

const ctLayout = "Jan 2, 2006 at 3:04pm (MST)"

func (ct *CustomTime) UnmarshalJSON(b []byte) (err error) {
    s := strings.Trim(string(b), "\"")
    if s == "null" {
        ct.Time = time.Time{}
        return
    }
    location, err := time.LoadLocation("Local")
    if err != nil {
        return err
    }
    ct.Time, err = time.ParseInLocation(ctLayout, s, location)
    return err
}

到这里,我们也就讲完了《在 Go 中将时区解析为 Location 结构》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表