站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        golang怎么設(shè)置時(shí)區(qū)

        golang設(shè)置時(shí)區(qū)的方法:1、固定時(shí)區(qū)到東八區(qū),設(shè)置代碼如“var cstZone = time.FixedZone("CST", 8*3600)”;2、加載指定時(shí)區(qū),設(shè)置代碼如“var cstSh, _ = time.LoadLocation("Asia/Shanghai")”。

        golang怎么設(shè)置時(shí)區(qū)

        本教程操作環(huán)境:Windows10系統(tǒng)、GO 1.18版、Dell G3電腦。

        golang怎么設(shè)置時(shí)區(qū)?

        Go時(shí)區(qū)設(shè)置

        時(shí)區(qū)的劃分

        全球以英國(guó)倫敦格林威治作為零度經(jīng)線的起點(diǎn),每隔15經(jīng)度為一個(gè)時(shí)區(qū),15度經(jīng)線為該時(shí)區(qū)的中央經(jīng)線,共分為24個(gè)時(shí)區(qū)。由西向東每隔15經(jīng)度增加一個(gè)時(shí)區(qū),相反的,每向西15經(jīng)度減少一個(gè)時(shí)區(qū)。中國(guó)所在時(shí)區(qū)為東8區(qū)。

        時(shí)間格式

        當(dāng)前時(shí)間time.Now()返回的是當(dāng)?shù)貢r(shí)區(qū)的時(shí)間:

        func main() {     t := time.Now()       fmt.Println(t) //2020-12-16 09:34:19.5828312 +0800 CST m=+0.004002201 }
        登錄后復(fù)制

        CST時(shí)間

        CST可以代表如下四個(gè)不同的時(shí)區(qū):

        Central Standard Time (USA) UT-6:00:美國(guó)標(biāo)準(zhǔn)時(shí)間 Central Standard Time (Australia) UT+9:30:澳大利亞標(biāo)準(zhǔn)時(shí)間 China Standard Time UT+8:00:中國(guó)標(biāo)準(zhǔn)時(shí)間 Cuba Standard Time UT-4:00:古巴標(biāo)準(zhǔn)時(shí)間
        登錄后復(fù)制

        time.Now()返回的 +0800 CST 表示的就是中國(guó)標(biāo)準(zhǔn)時(shí)間,與UTC時(shí)間有如下的轉(zhuǎn)化:

        GMT + 8 = UTC + 8 = CST
        登錄后復(fù)制

        Monotonic Clocks 和 Wall Clocks

        Wall Clocks表示掛鐘時(shí)間,存儲(chǔ)的是自1970 年 1 月 1 日 0 時(shí) 0 分 0 秒以來(lái)的時(shí)間戳,當(dāng)系統(tǒng)和授時(shí)服務(wù)器進(jìn)行校準(zhǔn)時(shí)間時(shí)間操作時(shí),有可能造成這一秒是2018-1-1 00:00:00,而下一秒變成了2017-12-31 23:59:59的情況。

        Monotonic Clocks,意思是單調(diào)時(shí)間的,所謂單調(diào),就是只會(huì)不停的往前增長(zhǎng),不受校時(shí)操作的影響,這個(gè)時(shí)間是自進(jìn)程啟動(dòng)以來(lái)的秒數(shù)。

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

        時(shí)區(qū)設(shè)置

        go語(yǔ)言中如果不設(shè)置指定的時(shí)區(qū),通過(guò)time.Now()獲取到的就是本地時(shí)區(qū)

        func main() {     t := time.Now()   //返回本地時(shí)區(qū)格式     fmt.Println(t) }
        登錄后復(fù)制

        設(shè)置時(shí)區(qū)有兩種方式:

        • 固定時(shí)區(qū)(推薦使用)

        var cstZone = time.FixedZone("CST", 8*3600)         // 東八 fmt.Println(time.Now().In(cstZone).Format("2006-01-02 15:04:05"))
        登錄后復(fù)制

        固定時(shí)區(qū)到東八區(qū)。但這種不是對(duì)程序的全局設(shè)置,每次獲取時(shí)都需要固定時(shí)區(qū)

        • 加載時(shí)區(qū)

        var cstSh, _ = time.LoadLocation("Asia/Shanghai") //  上海 fmt.Println(time.Now().In(cstSh).Format("2006-01-02 15:04:05"))
        登錄后復(fù)制

        加載指定時(shí)區(qū)。但如果沒(méi)有g(shù)o環(huán)境使用這種方式就會(huì)加載失敗,因?yàn)闀r(shí)區(qū)信息是放在go的安裝包中的。

        docker中配置時(shí)區(qū)

        如果你用第二種方式加載時(shí)區(qū),在打docker鏡像時(shí)就需要進(jìn)行時(shí)區(qū)相關(guān)的配置,配置文件如下:

        FROM golang:alpine as build RUN apk --no-cache add tzdata  //構(gòu)建階段加載時(shí)區(qū) WORKDIR /app ADD . /app RUN CGO_ENABLED=0 GOOS=linux go build -o myapp  FROM scratch as final  COPY --from=build /app/myapp . ### 下面這行是新加的,復(fù)制時(shí)區(qū)相關(guān)的信息到最終鏡像中,否則程序會(huì)找不到改時(shí)區(qū) COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo ENV TZ=Asia/Shanghai  //在最終階段設(shè)置時(shí)區(qū)環(huán)境變量  CMD ["/myapp"]
        登錄后復(fù)制

        推薦學(xué)習(xí):《go視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品爽爽ⅴa在线观看| 国产精品高清2021在线| 国产精品久久久久久影院| 欧美黑人巨大videos精品| 欧美极品欧美精品欧美视频| 久久99精品国产麻豆| 亚洲精品97久久中文字幕无码| 91亚洲精品自在在线观看| 99国产精品一区二区| 久久夜色精品国产噜噜噜亚洲AV| 欧美精品一区二区三区免费| 国产精品久久久久久久久久免费| 精品在线免费观看| 高清免费久久午夜精品| 日韩人妻无码精品久久久不卡| 久久精品无码一区二区三区免费 | 一夲道无码人妻精品一区二区| 国产呦小j女精品视频| 911亚洲精品不卡| 亚洲第一精品在线视频| 97精品国产福利一区二区三区 | 精品国产欧美一区二区| 99精品免费视频| 国产精品久久毛片完整版| 国产2021精品视频免费播放| 国内精品久久久久久99蜜桃| 精品国产三级a∨在线| 久久国产精品99国产精| 久久精品国产亚洲AV无码娇色 | 精品一区二区三区在线观看| 国产精品成| 久久精品国产亚洲AV不卡| 国产在线精品一区二区三区不卡 | 欧美黑人巨大精品| 四虎国产精品永久一区| 嫩草影院久久国产精品| 91热成人精品国产免费| 国产内地精品毛片视频| 久久久久久国产精品美女| 亚洲国产精品狼友中文久久久 | 久久99精品久久久久久秒播 |