登录
首页 >  Golang >  Go问答

转换 GoLang 的时区

来源:stackoverflow

时间:2024-02-20 14:30:28 373浏览 收藏

一分耕耘,一分收获!既然都打开这篇《转换 GoLang 的时区》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我希望以特定格式显示特定国家/地区的时间。我当前的代码:

now := time.Now()
ogTime := time.Date(2022, 8, 1, 0, 0, 0, 0, now.Location())
loc, _ := time.LoadLocation("Asia/Singapore")
convertedTime := ogTime.In(loc)
fmt.Println(convertedTime)

这会打印出 2022-08-01 08:00:00 +0800 +08

有没有办法显示 2022-07-31t16:00:00z? 是否可以删除时间偏移而只显示 z?我尝试过 ogtime.format(rfc3339) 以及 ogtime.format("2006-01-02 t15:04:05z") 之类的东西,但都不起作用。


正确答案


fmt.println 使用 stringer() 实现 time.time 将值打印为字符串,这决定了您的格式。 要自行设置格式,请使用 time.time.format();

now := time.now()
fmt.println(now.format(`2006-01-02t15:04:05z07:00`))

输出中不带偏移量的“z”表示时间采用 utc 格式。如果您不想打印时区,请从格式中省略它;
fmt.println(convertedtime.format("2006-01-02t15:04:05"))

如果要以utc格式打印,请在打印前转换时区; fmt.println(convertedtime.utc().format("2006-01-02t15:04:05z07:00"))

在时间不是 utc 时打印“z”需要您自己连接它,但这很愚蠢;
fmt.println(convertedtime.format("2006-01-02t15:04:05") + "z")

如果您想提供本地时间并以 utc 格式打印,请在解析日期时提供您的时区

loc, _ := time.LoadLocation("Asia/Singapore")
ogTime := time.Date(2022, 8, 1, 0, 0, 0, 0, loc)
fmt.Println(ogTime.UTC().Format("2006-01-02T15:04:05Z07:00"))

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《转换 GoLang 的时区》文章吧,也可关注golang学习网公众号了解相关技术文章。

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