
新元号発表まであと1週間となりましたが、PowerShellで日付を和暦表示するスクリプトを作ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # # Get-WarekiDate.ps1 # #パラメータ Param( $date , $time ) try{ if (( $date -eq $null ) -And ( $time -eq $null )){ #両方nullなら現在の日付を取得 $d = Get-Date } elseif (( $date -ne $null ) -And ( $time -eq $null )) { #指定した日付 $d = [System.DateTime]::Parse( $date ) } elseif (( $date -ne $null ) -And ( $time -ne $null )) { #指定した日付と時刻 $d = [System.DateTime]::Parse( $date + ' ' + $time ) } else { #それ以外はエラー Write -Output 'パラメータが間違っています。[日付] [時刻]を指定してください。' exit } $c = New-Object System.Globalization.CultureInfo( "ja-JP" , $true ) $c .DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar #和暦で表示 $d .ToString( "ggy年M月d日 HH:mm:ss" , $c ) } catch [System.FormatException]{ Write-Host "日付の指定が間違っています。" Write-Host $_ } catch{ Write-Host $_ } |
Windowsでは和暦情報を下記のレジストリを使って管理しているのですが、PowerShellで和暦表示させる場合もこの情報を取得してきています。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras |
1 2 3 4 5 6 7 8 9 10 11 12 | PS C:\work\PowerShell> Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras 1868 01 01 : 明治_明_Meiji_M 1912 07 30 : 大正_大_Taisho_T 1926 12 25 : 昭和_昭_Showa_S 1989 01 08 : 平成_平_Heisei_H PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese PSChildName : Eras PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry |
おそらく4月1日以降マイクロソフトから更新プログラムが公開され、平成の下に新元号のデータが追加されることになると思います。
では、実際に表示させてみます。
1 2 | PS C:\work\PowerShell> .\Get -WarekiDate .ps1 平成31年3月25日 21:54:10 |
1 2 | PS C:\work\PowerShell> .\Get -WarekiDate .ps1 1980/3/25 昭和55年3月25日 00:00:00 |
1 2 | PS C:\work\PowerShell> .\Get -WarekiDate .ps1 1912/7/30 22:32 大正1年7月30日 22:32:00 |
4月1日、どんな元号となるのか楽しみです。
<参考>
西暦と和暦を変換するには?:.NET TIPS - @IT
アプリケーションの新元号対応 | Microsoft Docs
DateTime.ToString Method (System) | Microsoft Docs
CultureInfo Class (System.Globalization) | Microsoft Docs
JapaneseCalendar Class (System.Globalization) | Microsoft Docs
スポンサーリンク