golang中多种方式设置时区

Golang与Gorm处理MySQL时区问题的实战解析 本文深入解析了Golang使用Gorm框架操作MySQL时常见的8小时时区偏差问题。核心在于数据库连接会话的时区设置,通过正确配置DSN连接串中的`parseTime=True`和`loc`参数(如`loc=Asia%2FShanghai`),可确保datetime字段存储与读取的时间一致性,并提供多环境下的UTC最佳实践方案。 阅读详情
AI摘要

本文介绍了Go语言中获取当前时区时间及设置自定义时区的方法,包括time.Now().Format和time.LoadLocation的使用。同时,针对Windows系统缺少时区数据库的问题,提出了两种解决方案:自定义时区文件路径和使用time.FixedZone。最后,展示了如何在程序全局设置默认时区。

关于我

文章首发 | 我的博客 | 欢迎关注

go语言的time.Now()返回的是当地时区时间

time.Now().Format("2006-01-02 15:04:05")

time设置自定义时区

var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海
fmt.Println("SH : ", time.Now().In(cstSh).Format("2006-01-02 15:04:05"))

LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。所以如果windows系统没有安装go环境,调用LoadLocation就会报错。

当前解决方法也有:

1、我们可以自己把tzdata文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。

文件目录可以通过环境变量设置,在main方法中:

os.Setenv("ZONEINFO", '/home/tz/data.zip')

然后再调用 LoadLocation 方法就可以了。

下载tzdata

2、使用时区方式 推荐方式

var cstZone = time.FixedZone("CST", 8*3600)       // 东八区
fmt.Println("SH : ", time.Now().In(cstZone).Format("2006-01-02 15:04:05"))

全局设置

如果说要设置全局的time时区配置应该如何做?

main.go(主函数处)增加一个初始化方法

func initInMain() {
	var cstZone = time.FixedZone("CST", 8*3600) // 东八
	time.Local = cstZone
}

将定义的时区实例赋值给time.Local

推荐阅读

Redis工具收费后新的开源已出现

GitHub上Star最高的工程师技能图谱

中国程序员最容易发错的单词

推荐!!! Markdown图标索引网站

最后

本文到此结束,希望对你有帮助 😃

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

更多精彩技术文章汇总在我的 公众号【程序员工具集]】,持续更新,欢迎关注订阅收藏

golang根据配置的时间和时区计算定时任务是否到了刷新时间 阅读详情

相关推荐

【Golang】Go语言中时间time相关处理方法

在Go语言中,time 包是处理时间和日期的核心。它提供了丰富的函数和方法,用于显示、测量、计算、格式化、解析时间等。

景天科技苑 3万+

golang:时间转换总结

1、日期格式化为字符串 1.1、获取当前时间并转换为一定格式的字符串 func main(){ //日期格式化为字符串 t := time.Now().Format("2006-01-02 15:04:05") fmt.Println(t, reflect.TypeOf(t)) //2018-12-21 14:17:04 string t = time.Now().Format("

OceanStar的博客 5663

Linux 设置系统时区【多种方法】

使用CentOS7容器镜像时,配置该镜像的时区,以解决时间少了8H的问题。

甘蓝的专栏 796

这些关于 Golang timezone 时区的坑, 我已经帮你踩过了

这些关于 Golang timezone 时区的坑, 我已经帮你踩过了 原文链接: https://tangx.in/posts/2023/01/09/golang-timezone-issue/ Golang 中一些不太注意的时区问题 1. time/tzdata 库 Golang 内置的一个时区文件。 可以在程序中任意位置被导入。 导入后, 如果程序 找不到本地 时区文件, 就会使用该库的数据。 本地 指的是 运行环境, 可能是实际的服务器, 也可能是容器。 通常, 应该在 main.go

BASHRC的专栏 1381

正交试验-方差分析-数据展现形式

方差分析(ANOVA, Analysis of Variance)用于比较多个组之间的均值差异,确定因素对响应变量的显著性影响。示例分析。

m0_58326994的博客 1971

3DSlicer冠脉分割实战:从DICOM导入到三维重建的完整流程(附常见问题解决)

本文详细介绍了使用3DSlicer进行冠脉分割的完整流程,从DICOM数据导入到三维重建,涵盖环境配置、视图优化、心脏区域分割及冠脉精细分割等关键步骤。针对常见问题提供实用解决方案,帮助医学影像从业者高效完成心血管结构分析,提升诊断准确性。

weixin_29271053的博客 630

golang 时区相关

Golang中的时区概念 0时区为UTC,中国大陆的时区为8,为UTC+8. (UTC universal time coordinated 与格林威志时一样,都与伦敦当地时一致。) 获取时区信息 time.Local 为当前系统时区信息; time.LoadLocation() 根据日期字符串内容来分析相应的时区信息。 时间与时区的操作 time.Now() 获取系统当前时区时间; ...

灵山一笑 1274

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

golang:时区设置

在Go语言上,go语言的time.Now()返回的是当地时区时间,直接用: time.Now().Format("2006-01-02 15:04:05") 输出的是当地时区时间。 go语言并没有全局设置时区这么一个东西,每次输出时间都需要调用一个In()函数改变时区: var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海 fmt.Prin...

OceanStar的博客 4968

【EtherCAT实践篇一】TwinCAT 3安装、使用

FULL(XAE)安装包:包含了XAR的功能,并能进行多种语言的编程和硬件组态,通常安装在编程电脑上;XAR安装包:包含了ADS的功能,是实时运行环境,对 TwinCAT 模块进行加载、执行、管理、实时运行与调用,通常安装在PLC中;RM安装包:在装了高版本的TwinCAT 3后,发现PLC中的TwinCAT版本较低,就需要安装相应低版本的RM安装包切换版本使用(注:4024无法使用RM安装包切换到低于4022的版本,如4020/4018/4016版本。

JXES智能生态系统 5128

关于 ABAP OPEN SQL 的动态 WHERE 条件和 Dynamic Selections

ABAP动态查询技术解析 本文介绍了ABAP中实现灵活数据库查询的动态选择技术,通过FREE_SELECTIONS函数组实现用户自定义查询条件。核心内容包括: 传统固定WHERE条件的局限性,无法满足业务多变需求 Dynamic Selections机制的工作原理,使用FREE_SELECTIONS_INIT初始化、FREE_SELECTIONS_DIALOG交互 完整Demo程序演示如何构建通用表数据浏览器: 用户输入表名后校验权限 调用动态选择函数生成条件 动态拼接WHERE子句执行查询 使用CL_SA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 676

Docker镜像时区设置

alpine系统时区设置 我们先使用docker run -it --name alpine_test --rm alpine:3.9 sh命令启动一个alpine系统。 查看系统时间: # echo $TZ # date Mon Mar 11 10:47:20 UTC 2019 复制代码看到默认时间为UTC时间,比北京时间晚8个小时。 先安装**tzdata*包: apk add --no-c...

weixin_33711647的博客 5873

【Qt】QtCreator远程部署、调试程序

1)QtCreator 工具–> 选项 --> 设备 --> 添加2)设备设置向导选择–> Generic Linux Device --> 开启向导3)填写“标识配置的名称”(随便写)、设备IP、用户名 --> 下一步4)选择配对秘密文件,第一次配对,可以不填写,点击“下一步”5)点击“完成”6)设备添加成功,需要再配置SSH端口号、用户名、密码等7)保存SSH登陆密码:验证类型选择默认“Default”–> “创建新密钥”–> “Test”

郭老二 5194

Carbon时区处理完全指南:如何在Go中优雅管理多地区时间

Carbon是Go语言中一款强大的时间扩展库,为开发者提供了简洁高效的时区管理解决方案。无论是处理跨地区业务系统还是构建全球化应用,掌握Carbon的时区功能都能让时间处理变得轻松自如。 ## 为什么选择Carbon处理时区? 在Go语言原生的time包基础上,Carbon提供了更加人性化的时区操作接口。通过封装复杂的时区转换逻辑,Carbon让开发者可以专注于业务逻辑而非时间处理细节。其核心

gitblog_01161的博客 946

CAMERALINK硬件封装说明

闲言少叙,直接上活,Cameralink硬件接口当前主要分为MDR26和SDR26两种,其中MDR对应封装较大价格比较便宜,SDR对应尺寸较小价格比较贵,这点我个人总是记错的图1 MDR26实物图图2 SDR26实物图。

6171

高通平台WIFI学习-- 基于6GHZ Discovery (STA Scanning)讲解

本文介绍了6GHz频段的网络扫描优化方案。主要内容包括:1)带内发现机制,将6GHz信道分为优先扫描信道(PSC)和非PSC信道,规范了STA发送探测请求的条件及等待时间;2)带外发现机制,通过RNR信息元素实现跨频段AP发现,减少6GHz频段干扰;3)具体扫描流程示例,包括DBS扫描和敏捷扫描的顺序安排。方案通过优化探测请求发送规则和跨频段信息共享,有效降低了信道污染和扫描延迟,日志数据验证了6GHz信道扫描的具体实现过程。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 267

Mysql 时区设置解决

Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually. MySQL时区问题解决办法 一劳永逸

qq_44392492的博客 4269

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

php、go项目开发的时区问题

背景 今天脑子里突然冒出一个疑问,前段时间做golang的web项目,框架是iris,测试环境是docker,发现官方的golang的docker容器里面的时区是UTC时区和北京时间相差8h,后面貌似是: $ docker run -d \ -e "TZ=Asia/Shanghai" \ ... 即运行容器时,指定容器内的时区信息!解决了该问题! 网上搜索全局设置golang 的时区信息,给出的方式是:通过自定义一个tzinit,时区初始化包,来实现时区的全局设置,init会在被其他包import时

WZP_LOVE的专栏 463

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Go-MySQL-Driver时区处理:时间数据的正确存储与读取

在分布式系统和跨时区应用中,时间数据的正确处理是开发过程中最常见的痛点之一。你是否遇到过这样的问题: - 从数据库读取的时间比实际存储的时间晚了8小时? - 不同地区的用户看到的时间戳不一致? - 时间数据在存储和读取过程中出现意外的时区转换? 这些问题往往源于对MySQL时区处理和Go语言时间类型的理解不足。本文将深入解析Go-MySQL-Driver的时区处理机制,帮助你掌握时间数据的正确...

gitblog_01095的博客 692

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MongoDB compasss时区设置

数据库,go相关视频讲解:Windows Server 2008备份关键卷golang context 并发编程实战考题——实现带有过期功能的单机锁MongoDB Compass 时区设置科普文章 MongoDB Compass 是 MongoDB 官方提供的一个图形界面工具,它允许用户以可视化的方式管理 MongoD...

weixin_36307834的博客 881

go gorm mysql在windows和在linux显示的时区不同,时间也不同

统一数据库时区:使用固定偏移(如+08:00)而非时区名称平台适配连接:Windows 使用loc=Local,Linux 使用应用层转换:所有显示时间统一转换为目标时区环境一致性:使用 Docker 确保运行时环境一致通过以上方案,您可以彻底解决 Windows 和 Linux 平台上的时区显示差异问题,确保应用程序在不同环境中表现一致。

leijmdas的专栏 987

golang分布式服务部署的时区问题

golang分布式服务部署的时区问题 golang时区问题

qq_37106501的博客 1190

linux设置时区和时间_Linux设置日期,时间和时区

linux设置时区和时间How to set date, time and timezone on Linux/Unix box will be introduced in this post. 本文将介绍如何在Linux / Unix机顶盒上设置日期,时间和时区。 Unix time, or POSIX time which is a system for describing points ...

cuma2369的博客 1921

指定时区以及时区偏移的获取

多种方法获取时区时间

岳来的博客 856

Docker容器设置时区

最近用Go开发了一套任务管理系统,部署到服务器上发现时间比线下环境慢了个8小时,后面查找了资料,发现这是因为docker容器默认时间为UTC,所以我们只要设置docker容器默认时区为我们想要的时区就可以。在这里跟大家分享两个方法来设置容器的时区,不过考虑到构建时间的问题,建议大家使用第二种方法。

2401_83384536的博客 587
上一篇: 一个有情怀的PPT模板下载网站
下一篇: Golang号称最快的Json解析器速度可达5623ns/op
HapplyFox
博客等级 码龄7年 101粉丝 37原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值