PowerShell: 曜日を英語・日本語で取得する

PowerShellで曜日の情報を英語(Sunday~Saturday)と 日本語(日曜日~土曜日)で取得する方法をそれぞれ解説します。 曜日を英語で取得する場合はDateTimeクラスのDayOfWeekプロパティを使い、 日本語で取得する場合はToStringメソッドを使うと簡単に取得できます。 DateTimeクラスは.NET Frameworkのクラスの1つです。

曜日を英語で取得する

DateTimeクラスのDayOfWeekプロパティを使うと 曜日を英語(Sunday, Monday, ..)で取得できます。

まずは今日の曜日を取得してみます。
Get-Dateコマンドレットで今日の日時を取得して、 DayOfWeekプロパティで曜日を取得します。

$d = Get-Date
$d
$d.DayOfWeek

# 実行結果
2022年1月29日 3:25:39
Saturday

Get-Dateの代わりにNowプロパティを使っても同じです。

[datetime]::Now
[datetime]::Now.DayOfWeek

# 実行結果
2022年1月29日 3:30:53
Saturday

特定の日付の曜日を取得したい場合、 日付の文字列をDateTime型に変換してからDayOfWeekプロパティを使用します。 次のコードは2022年1月2日の曜日を取得しています。

$d = [datetime]"2022/1/2"
$d.DayOfWeek

# 実行結果
Sunday

英語の曜日を省略名(Sun, Mon, ...)にしたい場合、 曜日を文字列に変換し、 Substringメソッドで最初の3文字を取得します。

$d = [datetime]"2022/1/2"
$s = [string]$d.DayOfWeek
$s.Substring(0, 3)

# 実行結果
Sun

曜日を日本語で取得する

曜日を日本語で取得する場合、 DatetimeクラスのToStringメソッドの書式指定で曜日だけを指定します。 具体的には「ToString("dddd")」や「ToString("ddd")」と記述します。 "dddd"と指定すると日曜日・月曜日といった完全名が取得でき、 "ddd"と指定すると日・月といった省略名が取得できます。
(関連記事: 日付をyyyymmdd、時刻をhhmmss形式で取得

次のコードは今日の曜日を完全名と省略名の両方で取得しています。

$d = [datetime]::Now
$d
$d.ToString("dddd")
$d.ToString("ddd")

# 実行結果
2022年1月29日 3:55:24
土曜日
土

特定の日付の曜日を日本語で取得する場合も、 先程と同じように日付の文字列をDateTime型にキャストして ToStringメソッドを使います。 次のコードは2021年12月31日の曜日を取得しています。

$d = [datetime]"2021/12/31"
$d
$d.ToString("dddd")
$d.ToString("ddd")

# 実行結果
2021年12月31日 0:00:00
金曜日
金

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

PowerShell
PR