go中的时间存入mysql,怎么成了UTC时间了

Python015

go中的时间存入mysql,怎么成了UTC时间了,第1张

如果mysql的数据类型是date的话 用date('Y-m-d')获取时间

如果是datetime类型,用date('Y-m-d H:i:s')获取时间

个人建议,用int存储,这样占用的的资源小,查询的速度也会快,用time()方法获取时间戳,在调用的时候根据你想要的形式,将时间戳转换成你要的时间,如果只显示年月日的话,用date('Y-m-d',$date),如果需要显示精确时间,用date('Y-m-d H:i:s')就可以了

全球以英国伦敦格林威治作为零度经线的起点,每隔15经度为一个时区,15度经线为该时区的中央经线,共分为24个时区。由西向东每隔15经度增加一个时区,相反的,每向西15经度减少一个时区。中国所在时区为东8区。

当前时间 time.Now() 返回的是当地时区的时间:

CST可以代表如下四个不同的时区:

time.Now() 返回的 +0800 CST 表示的就是中国标准时间,与UTC时间有如下的转化:

Wall Clocks表示挂钟时间,存储的是自1970 年 1 月 1 日 0 时 0 分 0 秒以来的时间戳,当系统和授时服务器进行校准时间时间操作时,有可能造成这一秒是2018-1-1 00:00:00,而下一秒变成了2017-12-31 23:59:59的情况。

Monotonic Clocks,意思是单调时间的,所谓单调,就是只会不停的往前增长,不受校时操作的影响,这个时间是自进程启动以来的秒数。

time.Now() 返回的 m=+0.004002201 就是表示Monotonic Clocks

go语言中如果不设置指定的时区,通过 time.Now() 获取到的就是本地时区

设置时区有两种方式:

固定时区到东八区。但这种不是对程序的全局设置,每次获取时都需要固定时区

加载指定时区。但如果没有go环境使用这种方式就会加载失败,因为时区信息是放在go的安装包中的。

如果你用第二种方式加载时区,在打docker镜像时就需要进行时区相关的配置,配置文件如下:

参考文章:

https://zhuanlan.zhihu.com/p/47754783

https://blog.mimvp.com/article/11887.html

getHours()是获取本时区的时间

getUTCHours()是获取的UTC时间,UTC时间是怎么来的呢?比如我们是东八区,UTC时间是我们的时区时间减8个小时,如果我们现在是上午11点,UTC时间就是上午3点,不知道你明白了没有