文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如果在流程执行期间更改时区,时间包中的区域方法不会返回更新的时区

2024-04-04 23:32

关注

你在学习Golang相关的知识吗?本文《如果在流程执行期间更改时区,时间包中的区域方法不会返回更新的时区》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我在下面编写了一个简单的 go 代码来获取系统时区。它工作正常并返回系统的当前时区。问题是,如果我在进程执行之间更改时区,那么它不会返回更新后的时区。它仅返回旧时区。

package main

import (
    "fmt"
    "time"
)

func main() {
    
    for i := 0; i < 10; i++ {
        t := time.Now()
        zone, offset := t.Zone()
        fmt.Println(zone, offset)
        z, _ := t.Zone()
        fmt.Println("timezone", z)
    }
}


正确答案


如果您查看 source code of the time package,您会发现本地位置在应用程序启动时设置一次,即 sync.Once(或更准确地说:获取 tz 信息时)通过第一次调用 .get()):

// localloc is separate so that initlocal can initialize
// it even if a client has changed local.
var localloc location
var localonce sync.once

func (l *location) get() *location {
    if l == nil {
        return &utcloc
    }
    if l == &localloc {
        localonce.do(initlocal)
    }
    return l
}

现在,initlocal 是平台相关的,因为不同的平台处理时区的方式不同;例如 for Windows 您有:

func initLocal() {
    var i syscall.Timezoneinformation
    if _, err := syscall.GetTimeZoneInformation(&i); err != nil {
        localLoc.name = "UTC"
        return
    }
    initLocalFromTZI(&i)
}

从这里开始,您可以通过源代码来了解如何为您的应用程序实现此功能。例如,在 windows 上,您可以通过调用 syscall.Timezoneinformation 结构体的 biasdaylightbias 字段来获取几分钟内的 utc 偏移量。

理论要掌握,实操不能落!以上关于《如果在流程执行期间更改时区,时间包中的区域方法不会返回更新的时区》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯