Golang 中如何进行时区转换与设置
发表时间: 2024-04-30 15:09
如何转换时区?
package mainimport ("fmt""time")func main() { // Local // golang 默认采用当地(本地)时区时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) // 2022-03-23 11:02:48 // 等同于 fmt.Println(time.Now().Local().Format("2006-01-02 15:04:05")) // 2022-03-23 11:02:48 // Local 本地时区 查看方式: cat /etc/timezone fmt.Println(time.Local) // UTC // 统一强制使用UTC时间, 使用 UTC 世界通用时间(相当于0时区) fmt.Println(time.Now().UTC().Format("2006-01-02 15:04:05")) // 2022-03-23 03:02:48 fmt.Println(time.Now().UTC().Unix()) // 1648004568 // 如何设置时区(东八区) var zone, _ = time.LoadLocation("Asia/Shanghai") fmt.Println("SH: ", time.Now().In(zone).Format("2006-01-02 15:04:05")) // SH: 2022-03-23 11:02:48}
Linux如何查看时区?
> # cat /etc/timezone
Asia/Shanghai
或者 使用 timedatectl 命令
> # timedatectl
Local time: Wed 2022-03-23 10:52:11 CST
Universal time: Wed 2022-03-23 02:52:11 UTC
RTC time: Wed 2022-03-23 02:52:12
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Linux如何设置时区:
> # timedatectl set-timezone "Asia/Shanghai"
结论:
在部署PHP项目的时候, 全局设置时区的方法:
date_default_timezone_set('PRC');
Golang 并没有全局设置时区方法, 每次输出时间都需要调用一个In()函数改变时区:
// 如何设置时区var zone, _ = time.LoadLocation("Asia/Shanghai") //上海fmt.Println("SH: ", time.Now().In(zone).Format("2006-01-02 15:04:05")) // SH: 2022-03-23 10:45:40
问题:
在windows系统上, 没有安装go语言环境的情况下, time.LoadLocation 会加载失败。
解决方法:
var zone = time.FixedZone("CST", 8*3600) // 东八fmt.Println("SH : ", time.Now().In(zone).Format("2006-01-02 15:04:05"))