概要
Excel、VBA、PowerShellそれぞれで、日付データを英語表記に書式設定する方法を確認する。
Excel、VBAの感覚でPowerShell(.NET)でやろうとしたらハマったので、その備忘録も含む。
コード
現在の日付(例:12月16日)をDec.16
に書式設定する場合の例。
Excelワークシート関数
Excel
=TEXT(NOW(),"mmm.dd")
VBA
VBA
Debug.Print VBA.Format$(Date$, "mmm.dd")
PowerShell
PowerShell
[DateTime]::Now.ToString( #書式指定文字列に加えてカルチャの指定が必要
'MMM.dd',
[Globalization.CultureInfo]::GetCultureInfo('en-US').DateTimeFormat #米国カルチャ
)
ハマったところ
PowerShellでは既定のカルチャとして、OSのカルチャ($PSCulture, $PSUICulture
)を使用するため、日本語環境だと英語表記に書式設定できない。
PS>Get-Date -Format MMM.dd
12.16
また、Get-Date
コマンドレットにはカルチャを指定するパラメータが無さそうなので、.NET Frameworkの力を借りる必要がある。
具体的にはDateTime
型のToStringメソッドの以下のオーバーロードを使用する必要がある。
PS>[DateTime]::Now.ToString
string ToString(string format, System.IFormatProvider provider)
あとがき
どうせなら
PS>Get-Date -Format MMMM.dd
師走.16
みたいに書式設定されると面白いのに、と思ったり。