PowerShell: 日付をyyyymmdd、時刻をhhmmss形式で取得

PowerShellで日付や時刻を取得する際に、 yyyy/mm/ddhh:mm:ssといった 任意の文字列型フォーマットで取得する方法を紹介します。 日時情報を見やすく加工したり、 ファイル名に日付情報を使用する際に使えます。

最初に年月日の形式、次に時刻の形式の順で説明します。

年月日のフォーマット(yyyy/MM/dd)

現在日を取得して任意のフォーマットに変換するとします。
現在日時はGet-Dateコマンドレット、 またはDateTimeクラスのNowプロパティで取得できます。

Get-Dateコマンドレットの場合は-Formatパラメータで形式を指定し、 Nowプロパティの場合はToStringメソッドで形式を指定します。

まずはGet-Dateコマンドレットの場合

Get-Date -Format "yyyy/MM/dd"

# 実行結果
2022/01/28

次はDateTimeオブジェクトのNowプロパティの場合です。

[datetime]::Now.ToString("yyyy/MM/dd")

# 実行結果
2022/01/28

年月日を指定する場合、日付の指定に注意してください。 小文字の「mm」ではなく大文字で「MM」です。 .NET Frameworkの書式指定しでは小文字の「m」は「minute(分)」を意味し、 大文字の「M」は「month(月)」を意味します。
そして「M」は1~31、「MM」は01~31となります。 0パディングする場合は「MM」です。

年・月・日・曜日に関する主な書式指定子は次の通りです。

書式指定子内容
yy年 2桁(00 - 99)
yyyy年 4桁
M月(1 - 12)
MM月(01 - 12)
d日(1 - 31)
dd日(01 - 31)
ddd曜日の省略名(日 - 土)
dddd曜日の完全名(日曜日 - 土曜日)

MとMM、dとddの違いは1桁の時に0埋めするかどうかです。

書式指定子の参考サイト
カスタム日時形式文字列 | Microsoft Docs

時刻のフォーマット(HH:mm:ss)

次は時刻のフォーマット指定についてです。

Get-DateとNowプロパティでの取得を同時に紹介します。

Get-Date -Format "HH:mm:ss"

[datetime]::Now.ToString("HH:mm:ss")

# 実行結果
10:48:04
10:48:04

注意する点は時刻です。 「hh」ではなく大文字の「HH」です。 小文字の場合は12時間形式で1~12までの表示となります。 24時間形式で表示する場合は大文字で「HH」とします。 「H」は0~23、「HH」は00~23です。

時間・分・秒・ミリ秒に関する主な書式指定子を紹介します。

書式指定子内容
h時間(1 - 12)
hh時間(01 - 12)
tt午前 or 午後
H時間(1 - 24)
HH時間(01 - 24)
m分(0 - 59)
mm分(00 - 59)
s秒(0 - 59)
ss秒(00 - 59)

Hやmなど1つの場合は0パディングなしで、 HHやmmなど2つ並べた場合は0パディングありです。

hやhhで12時間形式で表示する場合、 合わせて午前・午後の情報も「tt」で取得できます。

[datetime]::Now.ToString("tt hh:mm:ss")

# 実行結果
午前 11:19:26

(まとめ記事: PowerShell 日付・時刻

PowerShell
PR