#author("2018-04-06T21:11:57+09:00","","") #navi(../) * PowerShellで当日・指定日付の曜日を取得する方法 [#h0a01b93] Get-Dateコマンドレットで、当日、指定日付の曜日を取得するサンプルを以下に記します。 #contents #htmlinsertpcsp(win-top.html,win-sp.html) * 関連記事 [#sec66696] -[[本日が月末かどうかを判定するスクリプト>PowerShell/本日が月末かどうかを判定するスクリプト]] -[[PowerShellで文字列の日時をDateTimeオブジェクトにする方法>PowerShell/文字列の日時をDateTimeオブジェクトにする方法]] * 当日の曜日を取得する [#j023d1d0] Get-Dateコマンドレットで返却される当日のDateTimeおぷじぇくとのDayOfWeekプロパティの値を表示するサンプルです。 PS C:\> (Get-Date).DayOfWeek Friday * 指定日付の曜日を取得する [#aada9337] 以下の例は、2020/1/1を日付として設定し、設定した日付の曜日を取得するサンプルになります。 PS C:\> (Get-Date "2020/1/1").DayOfWeek Wednesday 構文は以下のようになります。 (Get-Date "日付").DayOfWeek * 英単語の日付ではなく、値で曜日を取得する [#g65c9b13] 値で曜日を取得する場合は、value__を使用します。(ダブルアンダースコアです) PS C:\> (Get-Date "2020/1/1").DayOfWeek.value__ 3 PS C:\> (Get-Date).DayOfWeek.value__ 5 以下、一週間分の曜日および、曜日に対する値を出力するサンプルになります。 PS C:\> $day = Get-Date PS C:\> for ($i=1; $i -le 7; $i++) { >> $sd = $day.ToShortDateString() >> $sw = $day.DayOfWeek >> $nw = $day.DayOfWeek.value__ >> "{0,10} {1,-9} {2,1}" -f $sd, $sw, $nw >> $day = $day.AddDays(1) >> } 2018/04/06 Friday 5 2018/04/07 Saturday 6 2018/04/08 Sunday 0 2018/04/09 Monday 1 2018/04/10 Tuesday 2 2018/04/11 Wednesday 3 2018/04/12 Thursday 4 * 各オブジェクト・メソッド・プロパティの説明 [#o232bafc] 上記のメソッドやプロパティで、曜日が取得できる仕組みを以下に記します。 + Get-DateコマンドレットでDateTimeオブジェクトが返却されます。 PS C:\> $d = Get-Date PS C:\> $d.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True DateTime System.ValueType +DateTimeオブジェクトのメソッド・プロパティを確認すると、DayOfWeekプロパティがあるのが確認できます。 PS C:\> $d | Get-Member TypeName: System.DateTime Name MemberType Definition ---- ---------- ---------- Add Method datetime Add(timespan value) AddDays Method datetime AddDays(double value) AddHours Method datetime AddHours(double value) <省略 DayOfWeek Property System.DayOfWeek DayOfWeek {get;} <省略> TimeOfDay Property timespan TimeOfDay {get;} Year Property int Year {get;} DateTime ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHin... +DayOfWeekプロパティで返却されるオブジェクトを確認すると、Enumであることが確認できます。 PS C:\> $d.DayOfWeek.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True DayOfWeek System.Enum +DayOfWeekのメンバーを確認すると、value__があるのが確認できます。 PS C:\> $d.DayOfWeek | Get-Member TypeName: System.DayOfWeek Name MemberType Definition ---- ---------- ---------- CompareTo Method int CompareTo(System.Object target), int IComparable.CompareTo(System.Object obj) Equals Method bool Equals(System.Object obj) <省略> value__ Property int value__ {get;set;} 以上の調べ方により、使用できるメソッドやプロパティを知ることができます。 #htmlinsertpcsp(win-btm.html,win-sp.html)