当前时间 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
是说 20060102150405 这个吗,原因大致如下:
可读性高,所见即所得
实现简单,排除二义性(15或3代表时,4代表分,5代表秒,06或2006代表年)
请参考源代码:
https://golang.org/src/time/format.go#L178
187 case '3':
188 return layout[0:i], stdHour12, layout[i+1:]
189
190 case '4':
191 return layout[0:i], stdMinute, layout[i+1:]
192
193 case '5':
194 return layout[0:i], stdSecond, layout[i+1:]
195
console.log(new Date(datetime))console.log(typeof (datetime))
console.log(new Date(datetime))
function format(shijianchuo){
//shijianchuo是整数,否则要parseInt转换
//var date = new Date(timestamp * 1000)//时间戳为10位需*1000,时间戳为13位的话不需乘1000
if(typeof(shijianchuo) =="string") {
shijianchuo=parseInt(shijianchuo)
}
var time = newDate(shijianchuo)
var y = time.getFullYear()
var m = time.getMonth()+1
var d = time.getDate()
var h = time.getHours()
var mm = time.getMinutes()
var s = time.getSeconds()
//加0操作
m=m<10?'0'+m:m
d=d<10?'0'+d:d
h=h<10?'0'+h:h
mm=mm<10?'0'+mm:mm
s=s<10?'0'+s:s
return y+'-'+m+'-'+d+' '+h+':'+mm+':'+s
}