登录
首页 >  Golang >  Go问答

如何正确解析时区代码

来源:Golang技术栈

时间:2023-04-06 14:51:19 475浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《如何正确解析时区代码》,主要内容是讲解golang等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

在下面的示例中,无论您为 parseAndPrint 函数选择哪个时区,结果始终为“[date] 05:00:00 +0000 UTC”。这段代码有什么问题?时间应根据您选择的时区而变化。(Go Playground 服务器显然是在 UTC 时区配置的)。

http://play.golang.org/p/wP207BWYEd

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    parseAndPrint(now, "BRT")
    parseAndPrint(now, "EDT")
    parseAndPrint(now, "UTC")
}

func parseAndPrint(now time.Time, timezone string) {
    test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone))
    if err != nil {
        fmt.Println(err)
        return
    }

    test = time.Date(
        now.Year(),
        now.Month(),
        now.Day(),
        test.Hour(),
        test.Minute(),
        test.Second(),
        test.Nanosecond(),
        test.Location(),
    )

    fmt.Println(test.UTC())
}

正确答案

当您解析时间时,您是在当前位置解析它,只要这是您所期望的就可以了,并且时区缩写在您所在的位置是已知的。

如果您可以放弃时区,那么将您处理的所有时间标准化为 UTC 会容易得多。

下一个最简单的方法是使用显式偏移处理所有内容,例如-05:00.

如果要处理源自其他时区的时间,则需要使用time.Location. 您可以使用 加载本地时区数据库中的位置time.LoadLocation,并使用 解析那里的时间time.ParseInLocation

今天关于《如何正确解析时区代码》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

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