在 Go 语言中处理时间和时区是一个常见的需求。time 包提供了丰富的功能来处理时间和时区。以下是一些基本的操作:

    获取当前时间

    now := time.Now()
    

    设置时区: 你可以使用 time.LoadLocation 来加载一个时区,然后使用 time.Now().In() 方法来获取指定时区的当前时间。

    loc, err := time.LoadLocation("Asia/Shanghai")
    if err != nil {
       log.Fatal(err)
    }
    nowInLocation := time.Now().In(loc)
    

    格式化时间: 使用 time.Format 方法来格式化时间。

    formattedTime := now.Format("2006-01-02 15:04:05")
    

    解析时间: 使用 time.Parsetime.ParseInLocation 来解析时间字符串。

    timeStr := "2023-01-09 22:13:17"
    utcTimeObj, err := time.Parse("2006-01-02 15:04:05", timeStr)
    if err == nil {
       fmt.Println("Parsed time:", utcTimeObj)
    }
    

    时区转换: 使用 time.UTC()time.Local() 来转换时间为 UTC 或本地时间。

    获取时区信息: 使用 time.Zone() 方法来获取当前时间所在的时区名称和偏移量。

    zoneName, offset := now.Zone()
    

    处理夏令时: 使用 time.IsDST() 方法来检查当前时间是否处于夏令时。

    设置全局时区: 可以通过设置 time.Local 变量来改变全局时区设置。

如果你需要更详细的操作或者有特定的时区处理需求,可以查看 time 包的文档 。此外,如果你的应用程序需要处理多个时区,可以考虑使用第三方库,如 github.com/tkuchiki/go-timezone ,它提供了额外的时区处理功能。