序章
今日、フロントエンドから送信されたアフリカの国の時点を検証したところ、ローカルデバッグでは通常の検証に合格したのに、サーバーにデプロイした後に検証が失敗してしまい、非常に違和感がありました。そこで、使用している主要な関数のソースコードを確認してみたところ、タイムゾーンを読み込む際にはタイムゾーンデータベース(前回記事「IANAタイムゾーンデータベースとZONEINFOの詳細解説」を参照)のデータが使用されることが分かりました。 Golang の例として、次のようにロードします。 タイム ゾーン関数は、タイム ゾーン データベースのデータを使用します。
time.LoadLocation("Africa/Cairo")
Linux システムでは、タイム ゾーン データベースの場所は /usr/share/zoneinfo です。
tzdataとは何ですか?
tzdata ソフトウェア パッケージの正式名は、タイム ゾーンと夏時間 (DST) データであり、タイム ゾーン データベースのデータを読み取るために各 Linux システムにインストールされます。タイム ゾーン データベース (略して tz または tzinfo) は、地球上のさまざまな場所の時刻歴を表すコードとデータのセットであり、現在 IANA によって維持されています。
tzdata は、プラットフォームごとに異なる実装が存在する場合があります。通常は、すべてのタイム ゾーンの情報ファイルが含まれるzoneinfo フォルダーの下にあります。Linux システムでは、このフォルダーは通常 /usr/share/zoneinfo にあります。
tzdata を使用すると、アプリケーションとオペレーティング システムは、場所と選択した設定に基づいてタイム ゾーンを自動的に切り替えることができます。これは、異なるタイムゾーンにまたがる国際的なビジネスやグローバル アプリケーションにとって重要です。
tzdataを更新する
タイム ゾーン データベースは地球上の国または地域のタイム ゾーンが変更されると更新されるため、サーバー上のタイム ゾーン データベースも最新バージョンに更新しておく必要があります。
Debian/Ubuntu を例として、まず非対話型として設定し、デフォルトの方法に従ってインストールします。
export DEBIAN_FRONTEND=noninteractive
ダウンロードソースを更新する
apt-get update
tzdata のインストールまたは更新
apt-get install -y tzdata
さて、タイムゾーンの設定方法を紹介しますと、タイムゾーンを東八区に設定するには、以下のコマンドを実行します。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime