首頁 > 後端開發 > Golang > 主體

go語言怎麼設定時區

青灯夜游
發布: 2023-01-09 10:27:45
原創
3458 人瀏覽過

兩種設定方式:1、固定時區,語法「var c = time.FixedZone("CST", 8*3600)」和「time.Now().In(c).Format("時間")」;2、載入時區,語法「var c, _ = time.LoadLocation("Asia/Shanghai")」和「time.Now().In(c).Format("時間")」。

go語言怎麼設定時區

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

時區的劃分

全球以英國倫敦格林威治作為零度經線的起點,每隔15經度為時區,15度經線為此時區的中央經線,共分為24個時區。由西向東每隔15經度增加一個時區,相反的,每向西15經度減少一個時區。中國所在時區為東8區。

時間格式

目前時間time.Now()傳回的是當地時區的時間:

func main() {
    t := time.Now()  
    fmt.Println(t) //2020-12-16 09:34:19.5828312 +0800 CST m=+0.004002201
}
登入後複製

CST時間

CST可以代表以下四個不同的時區:

  • Central Standard Time (USA) UT-6:00:美國標準時間
  • Central Standard Time (Australia) UT 9:30:澳洲標準時間
  • China Standard Time UT 8:00:中國標準時間
  • Cuba Standard Time UT- 4:00:古巴標準時間

time.Now()返回的 0800 CST 表示的就是中國標準時間,與UTC時間有如下的轉換:

GMT + 8 = UTC + 8 = CST
登入後複製

Monotonic Clocks 和Wall Clocks

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()取得到的就是本地時區:

func main() {
    t := time.Now()   //返回本地时区格式
    fmt.Println(t)
}
登入後複製

go語言並沒有全域設定時區這麼一個東西,每次輸出時間都需要呼叫一個In()函數改變時區。

設定時區有兩種方式:

1、固定時區(建議使用)

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

固定時區到東八區。但這種不是對程式的全域設置,每次取得時都需要固定時區

2、載入時區

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

載入指定時區。但如果沒有go環境使用這種方式就會載入失敗,因為時區資訊是放在go的安裝包中的。

註:docker中配置時區

如果你用第二種方式載入時區,在打docker映像時就需要進行時區相關的配置,設定檔如下:

FROM golang:alpine as build
RUN apk --no-cache add tzdata  //构建阶段加载时区
WORKDIR /app
ADD . /app
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp

FROM scratch as final

COPY --from=build /app/myapp .
### 下面这行是新加的,复制时区相关的信息到最终镜像中,否则程序会找不到改时区
COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Asia/Shanghai  //在最终阶段设置时区环境变量

CMD ["/myapp"]
登入後複製
【相關推薦:

Go影片教學程式設計教學

以上是go語言怎麼設定時區的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板