在python里面以及shell命令里面对于时间格式的解析是使用的%Y代表年份(year)、%m代表月份(month)、%d代表日期(day)、%H代表小时(hour)、%M表示分钟(minute)、%S表示时间单位秒(second)、%s表示距离1970-01-01过去的秒。
但是在golang里面使用的并不是这种格式解析,而是使用的2006(年份)01(月份) 02(日期) 03(小时) 04(分钟) 05(秒)这种格式来进行解析,具体的原因是看到有说06年是golang诞生的这一年,官方文档里面也没有仔细看找到相关说明。
###########################
The package docs explain it:
And there are articles online:
https://gobyexample.com/time-formatting-parsing
https://gobyexample.com/time-
Yes, you need to memorize the reference time (“Mon Jan 2 15:04:05 MST 2006” aka “01/02 03:04:05PM ‘06 -0700”), but it’s much easier (IMO) than memorizing all the strftime formats. And the format looks like what you get out of it or put into it.
############################
然后在使用过程中,在使用golang从MySQL【show VARIABLES like ‘%time_zone%’】中select出来时间之后进行换算之后发现在打出字符串格式的时候明明两个时间A:=time.Now()【2017011309】以及B:=Mysql_time【2017011310】,但是在使用A.After(B)结果总是对的,strftime之后打印出来也是这两个时间戳,特别奇怪,开始以为是代码那里赋值写错了,然后把代码改了一下改成直接fmt.Println将这两个值直接打出来而不是strtime,结果发现这两个time时区不一样!!!使用now获取到的时间自带时区是cst但是从数据库里面选出来的时间字段丢失了时区格式变成了utc时区(数据库时区同样是cst),后来看了一下好像是说golang的sql库确实是有这个问题的。。。囧
当然啦,后来同事是通过将字符串转化为atoi之后的方法直接比较大小。。暂时解决了这个问题。。。但是总感觉有点悬啊。。。
转载请注明来源链接 http://just4fun.im/2017/01/15/golang-e6-97-b6-e9-97-b4-e8-a7-a3-e6-9e-90-e7-9b-b8-e5-85-b3-e4-bb-a5-e5-8f-8abug-e8-ae-b0-e5-bd-95/ 尊重知识,谢谢:)