日付を取得する

基本

 日付を取得するには Get-Date コマンドレットを取得します。

PS U:\PS> Get-Date

2010年9月18日 18:35:03


PS U:\PS>

 日付を表す文字列から日付データを取得するには、Get-Dateコマンドレットの-Dateオプションを使用します。

PS U:\PS> Get-Date -Date '2012/04/06'

2012年4月6日 0:00:00


PS U:\PS> Get-Date '2012/04/06 21:00:01'

2012年4月6日 21:00:01


PS U:\PS>

 上記の例のように日付だけ指定しても、時刻まで指定してもOKです。「-Date」は書かなくても構いません。

 取得した日付を元に、曜日を表示することもできます。

PS U:\PS> # 曜日を取得
PS U:\PS> $date = Get-Date 2012/04/06
PS U:\PS> $date.DayOfWeek
Friday
PS U:\PS> # 曜日を取得(一時変数なし)
PS U:\PS> (Get-Date 2012/04/06).DayOfWeek
Friday
PS U:\PS>

前後の日時の生成

 Get-Dateコマンドレットが出力するのはDateTime型のオブジェクトです。そのため、以下の方法で、現在から指定時間だけ前や後の日時を生成できます。

PS U:\PS> (Get-Date).AddDays(-3)         # 3日前
PS U:\PS> (Get-Date).AddHours(-2)        # 2時間前
PS U:\PS> (Get-Date).AddMilliseconds(-1) # 1ミリ秒前
PS U:\PS> (Get-Date).AddMinutes(1)       # 1分後
PS U:\PS> (Get-Date).AddMonths(2)        # 2か月後
PS U:\PS> (Get-Date).AddSeconds(3)       # 3秒後
PS U:\PS> (Get-Date).AddYears(4)         # 4年後

 なお、変数に代入したDateTimeオブジェクトでこれらのメソッドを使用する場合、変数に入ったオブジェクト自体は変化しないことに注意して下さい。

PS U:\PS> # 変数に代入
PS U:\PS> $date = Get-Date 2012/04/06
PS U:\PS>
PS U:\PS> # 5日後のデータを生成
PS U:\PS> $date.AddDays(5)

2012年4月11日 0:00:00


PS U:\PS> # 変数値は変化しない
PS U:\PS> $date

2012年4月6日 0:00:00


PS U:\PS>

 AddDaysは$dateの日時を進めるのではなく、$dateのデータを元に、5日後を表す新しい日時データを生成すると考えて下さい。AddDaysだけではなくAddMonthsなども同様です。

文字列へ変換

 日時を表す文字列を出力するには -Format オプションを使用します。ここでは現在の日時を文字列に変換していますが、-Dateオプションと併用すれば任意時刻の文字列を出力できます。

PS U:\Ps> Get-Date -Format "yyyy/MM/dd HH時mm分ss秒"
2010/09/27 23時02分12秒
PS U:\Ps>

 書式の指定の仕方はDateTimeFormatInfo クラスに掲載されています。

 ファイルの更新日時などの書式を指定するにはToStringメソッドを使用して取得します。

PS U:\PS> $item = Get-Item .\000.jpg
PS U:\PS> $item.LastWriteTime.ToString('yyyy/MM/dd')
2012/02/29
PS U:\PS>

 -FormatオプションはGet-Dateコマンドレットのオプションであり、[DateTime]型の値には使用できません。要するに、変数に入った日時データを文字列に変換する場合は ToStringを使用し、Get-Dateコマンドレットでは-Formatオプションを使用します。

inserted by FC2 system