#author("2018-04-06T21:11:57+09:00","","")
#navi(../)
* PowerShellで当日・指定日付の曜日を取得する方法 [#h0a01b93]
Get-Dateコマンドレットで、当日、指定日付の曜日を取得するサンプルを以下に記します。
#contents
#htmlinsert(win_ads_top.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;}
以上の調べ方により、使用できるメソッドやプロパティを知ることができます。
#htmlinsert(win_ads_btm.html)