t := time.Now() // 2021-09-09 17:38:12.246295 +0800 CST m=+0.000161927 在 Go 中,可以使用time.Now()由time包提供的来确定当前时间。
t := time.Now().UTC() // 2021-09-09 09:38:38.031648 +0000 UTC 系统本地时间
t := time.Now().Unix() // 1631180346 时间戳
t := time.Now().Format("2006-01-02 15:04:05") // 2021-09-09 17:42:51
解释如下:Go 的时间格式是独一无二的,与您在其他语言中所做的不同。Go 没有使用传统格式来打印日期,20060102150405而是使用参考日期,这看起来毫无意义但实际上是有原因的,因为它1 2 3 4 5 6在 Posixdate命令中:
Mon Jan 2 15:04:05 -0700 MST 2006
0 1 2 3 4 5 6
中间的时区本来是7
(Mon Jan 2 03:04:05 -0600 MST 2007
顺便说一下,不确定他们为什么不选择)
有趣的历史参考:https : //github.com/golang/go/issues/444
使用格式常量
Go 在time包中为常用格式提供了一些方便的常量:
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
// Handy time stamps.
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
)
像这样使用它们
t := time.Now()
fmt.Println(t.Format(time.ANSIC))
反向代理主要负责静态文件处理和负载均衡,直接复制下面的配置。
proxy_pass 为 Gin 服务器的监听端口
server {
server_name www.domain.com;
listen 80;
root /data/mix/public;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8080;
}
}
}
在代码中通过读取 c.Request.Header.Get("X-Real-IP") 或者 c.Request.Header.Get("X-Forwarded-For") 来获取客户端的真实 IP
年月日 转时间戳
//获取当前时区
loc, _ := time.LoadLocation("Local")
//日期当天0点时间戳(拼接字符串)
startDate := date + "_00:00:00"
startTime, _ := time.ParseInLocation("2006-01-02_15:04:05", startDate, loc)
//日期当天23时59分时间戳
endDate := date + "_23:59:59"
end, _ := time.ParseInLocation("2006-01-02_15:04:05", endDate, loc)
//返回当天0点和23点59分的时间戳
return startTime.Unix(), end.Unix()
时间戳 转年月日期
func Time2DateTime(unixTime int64) (curDateTime string) {
_, _ = time.LoadLocation("Asia/Shanghai")
tm := time.Unix(unixTime, 0)
dateTime := tm.Format("2006-01-02 15:04:05")
return dateTime
}
网友评论