ホームページ  >  記事  >  バックエンド開発  >  golangでタイムゾーンを設定する方法

golangでタイムゾーンを設定する方法

藏色散人
藏色散人オリジナル
2023-03-25 11:47:583369ブラウズ

golang でタイムゾーンを設定する方法: 1. タイムゾーンを East Eighth District に固定し、「var cstZone = time.FixedZone("CST", 8*3600)」のようなコードを設定します。 ; 2. 指定したタイムゾーンをロードし、「var cstSh, _ = time.LoadLocation("Asia/Shanghai")」などのコードを設定します。

golangでタイムゾーンを設定する方法

このチュートリアルの動作環境: Windows 10 システム、GO バージョン 1.18、Dell G3 コンピューター。

golang でタイムゾーンを設定するにはどうすればよいですか?

Go タイム ゾーン設定

タイム ゾーン分割

世界では、イギリスのロンドンのグリニッジがゼロの開始点として使用されます。経度、経度 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 time

CST は次の 4 つの異なるタイム ゾーンを表すことができます:

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

単調時計と壁時計

壁時計は壁時計の時間を表し、1970 年 1 月 1 日 0:00:00 以降のタイムスタンプを保存します。タイミング サーバーの時刻では、この秒が 2018-1-1 00:00:00 で、次の秒が 2017-12-31 23:59:59 になる可能性があります。

Monotonic Clocks は、単調な時間を意味します。いわゆる単調とは、時間調整操作の影響を受けず、前方にのみ成長し続けることを意味します。この時間は、プロセスが開始されてからの秒数です。

time.Now() は m= 0.004002201 を返します。これは単調クロックを意味します。

タイム ゾーン設定

指定されたタイム ゾーンがgo 言語、時間を経て得られるもの。Now() はローカル タイム ゾーンです。

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

タイム ゾーンを設定するには 2 つの方法があります:

  • 固定タイムゾーン (推奨)

  • var cstZone = time.FixedZone("CST", 8*3600)         // 东八
    fmt.Println(time.Now().In(cstZone).Format("2006-01-02 15:04:05"))
東第 8 地区の固定タイムゾーン。ただし、これはプログラムのグローバル設定ではないため、タイム ゾーンを取得するたびに修正する必要があります。

  • ロード タイム ゾーン

  • var cstSh, _ = time.LoadLocation("Asia/Shanghai") //  上海
    fmt.Println(time.Now().In(cstSh).Format("2006-01-02 15:04:05"))
指定されたタイムゾーンをロードします。ただし、go 環境なしでこの方法を使用すると、タイムゾーン情報が go インストール パッケージに配置されるため、読み込みが失敗します。

docker でのタイム ゾーンの構成

2 番目の方法を使用してタイム ゾーンを読み込む場合は、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 videoチュートリアル"

以上がgolangでタイムゾーンを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。