date
WSLで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/localtime
DST
STD
実際、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参加者プログラムですでに利用可能したがって、ゾーンタグによって発生するアクティブな問題が発生した場合は、これを解決できます。アクティブにしたり、新しいタイムゾーンを適用するために何もする必要はありません。