私の日付出力のタイムゾーンに「STD」があるのはなぜですか?

私の日付出力のタイムゾーンに「STD」があるのはなぜですか?

dateWSLでUbuntuを実行すると、次のように印刷されます。

Wed May 15 19:33:37 STD 2019

STDこの文字列はなぜ含まれていますか?オンラインでは、STDという略語を含むタイムゾーンが見つかりません(例:ここ)そして「date std」を検索してみると、予期しない結果が出ました。

答え1

ありがとうJesse_bこれを見つけるためにスタックオーバーフローQ&A:

長い話を短くWSLは、仮想名を使用して.Msftファイル/usr/share/zoneinfo/Msft/localtimeにハードリンクされた偽のタイムゾーン情報ファイルを動的に生成し、特定のタイムゾーンを表しません。/etc/localtimeDSTSTD


実際、WSLはLinuxでWindowsのタイムゾーンを一致させようとします。これは、図に示すように、マイナーなマッピングです。ここ議論する)。したがって、動く目標を合わせようとする代わりに、WSLが行うことは、次のことを使用することです。Windows APIWindowsのタイムゾーン情報を取得し、この情報に基づいて動的に生成します。タイムゾーン情報ファイル

wslhost私は(特にWindowsのコードC:\Windows\System32\lxss\LxssManager.dll)が現在のタイムゾーンを確認し、それをファイルに書き込むと信じています/usr/share/zoneinfo/Msft/localtime。これがWindowsでタイムゾーンが変更されると、実行中のWSLにすぐに影響を与える理由です。しかし、WindowsタイムゾーンからLinuxまたはPOSIXタイムゾーンに完全なマッピングがないwslhostため名前、これはDSTが働くところです。

修正する:実際に夏時間帯にある場合は「DST」と言い、夏時間時間ではない時間帯には「STD」(標準だと思う)と言います。

したがって、「DSTが表すタイムゾーン」への答えは「いいえ」であり、タイムゾーンファイルを/etc/localtime一致させたいすべてのLinuxプログラム/usr/share/zoneinfo(読み取りリンクまたは単に検索を介して)は、「Msft / localtime」のみを返します。 「技術的には正確だがまったく役に立たない」答えです。


Windows 19H1(1903)のアップデートが2019年5月に最終リリースされる予定です。決定この問題とWSL展開は、可能であれば既存のタイムゾーンを報告します。

Windows 1903 WSLは正しいタイムゾーンを表示します。

最終公開前までの新バージョンWindows参加者プログラムですでに利用可能したがって、ゾーンタグによって発生するアクティブな問題が発生した場合は、これを解決できます。アクティブにしたり、新しいタイムゾーンを適用するために何もする必要はありません。

関連情報