令和の喧騒
2019年5月1日に元号が変わりました。
5月は令和一色といった感じで話題になっていましたが、システム界隈では何かと苦労された方も多いのではないでしょうか。
これを機に「和暦表記はやめて西暦で統一しよう」なんてところもあったかも知れません。
それでも、仕事をしていく上でちょこちょこ登場してくる和暦。
パソコン上での彼らの扱い方を知り、仲良くした方が賢明のようです。
ではPowerShellでどのように和暦を扱うか見ていくことにしましょう。
PowerShellで和暦を扱う
#自分のPCが日本語環境なら$culture = Get-CultureでもOK $culture = New-Object cultureinfo("ja-JP") $culture.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar (get-date).ToString("ggyy年M月d日", $culture)
PowerShellで実行すると、
今日の日付が和暦で表示され、
令和も表示されるはずです。
万が一表示されない場合は・・・
更新プログラムの適用が必要です。
PowerShellにおける和暦の管理
PowerShellでの和暦は、
.NETでの和暦の管理に依存しています。
.NETとはマイクロソフトの膨大なライブラリ群のことです。
.NETでの和暦は、レジストリから取得しているそうです
( .NET Framework 3.5からだそうです)。
どんな風に管理されているのか、
PowerShellで確認してみましょう。
PowerShellではレジストリを扱うのも
ファイルシステム(フォルダなど)と同じ操作感で扱うことが可能です。
レジストリはこちらになります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras ```` PowerShellでレジストリを見てるために dir(Get-ChildItem)コマンドを実行してみます。
PS C:> cd HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese PS HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese> dir
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese
NameProperty
Eras 1868 01 01 : 明治明Meiji_M 1912 07 30 : 大正大Taisho_T 1926 12 25 : 昭和昭Showa_S 1989 01 08 : 平成平Heisei_H 2019 05 01: 令和令Reiwa_R
いましたいました。 Windowsではこんな風に管理されているんですね。 このレジストリの日付、元号を使って令和が呼び出されたわけです。 もし今後、元号が変更になるときにPowerShell(に限らず.NET環境で)で 元号のテストを実施したいときは このレジストリにテストしたい元号を追加すればいいことになりますね。 まぁ、最もMicrosoftの方で間違いなくアップデートしてくれるので テストしたい、という場面は少ないでしょうが・・・。 <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9573169457351669" data-ad-slot="6049649558"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> ##おまけ:タイの仏歴 おまけで、タイの仏歴はどうなるのか見てみました。 仏歴とはお釈迦様が入滅された日を基準にする暦法です。
$culture = New-Object cultureinfo("th-TH") $culture.DateTimeFormat.Calendar = New-Object System.Globalization.ThaiBuddhistCalendar (get-date).ToString($culture) 22/9/2562 13:23:29
西暦に543を足した年が出てきました。 こういうのを見ると、Microsoftの国際化対応は改めてすごいなぁ関心してしまいます。 ここまでお読みいただき、ありがとうございました。 <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9573169457351669" data-ad-slot="6049649558"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> ##参考サイト様 [https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era:title] [https://docs.microsoft.com/ja-jp/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c:title] [https://forsenergy.com/ja-jp/windowspowershellhelp/html/b5e1dce6-e97d-4aa3-a8d4-95e7f0cf74e0.htm:title] [https://qiita.com/oruponu/items/cc75e19bca39985e64dc:title] [https://www.microsoft.com/ja-jp/mscorp/newera/default.aspx:title] [https://kubogen.com/journey-thailand-012/:title] <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9573169457351669" data-ad-slot="6049649558"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>