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

Go言語でタイムゾーンを設定する方法

青灯夜游
青灯夜游オリジナル
2023-01-09 10:27:453380ブラウズ

2 つの設定方法: 1. 固定タイムゾーン、構文「var c = time.FixedZone("CST", 8*3600)」および「time.Now().In(c).Format(」 Time ")"; 2. タイム ゾーン、構文 "var c, _ = time.LoadLocation("Asia/Shanghai")" および "time.Now().In(c).Format("time")" を読み込みます。

Go言語でタイムゾーンを設定する方法

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

タイムゾーンの区分

世界では、イギリスのグリニッジ、ロンドンを経度 0 度の開始点としており、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 は、次の 4 つの異なるタイム ゾーンを表すことができます:

    中部標準時 (米国) UT-6:00:米国標準時
  • 中部標準時(オーストラリア)UT 9:30:オーストラリア標準時
  • 中国標準時UT 8:00:中国標準時
  • キューバ標準時UT- 4:00: キューバ標準時

time.Now()変換によって返された 0800 CST:

GMT + 8 = UTC + 8 = CST

単調時計と掛け時計

掛け時計は掛け時計の時間を表し、1970 年 1 月 1 日の 0:00:00 からの時間を保存します。タイムスタンプは、システムとタイミング サーバーが時間調整操作を実行するときです。この 2 秒目は 2018-1-1 00:00:00 になり、次の 2 秒目は 2017-12-31 23:59:59 になる可能性があります。

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

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

タイム ゾーン設定

指定されたタイム ゾーンが Go 言語に設定されていない場合、ローカル タイム ゾーンは

time.Now() を通じて取得されます:

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

Go 言語にはこのようなグローバル設定のタイムゾーン 何か、時刻を出力するたびに、In() 関数を呼び出してタイムゾーンを変更する必要があります。

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

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 でのタイム ゾーンの構成

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 ビデオ チュートリアル プログラミング教育 ]

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

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