PowerShell: 日付・時刻操作のまとめ
PowerShellで今日の日付や現在時刻の取得、 書式フォーマット、曜日の取得、日時の計算(加算・減算)、日時の比較など、 日付と時刻の扱いについてまとめています。
今日の日付と現在時刻を取得する
PowerShellで今日の日付や現在の時刻を知りたい場合、 Get-DateコマンドレットやDateTimeクラスのNowプロパティを使います。 どちらも結果は同じです。
今日の日付と現在時刻
「Get-Date」と 「Nowプロパティ」の2つの方法で現在日時を取得しています。
Get-Date [datetime]::Now # 実行結果 2022年1月28日 3:56:08 2022年1月28日 3:56:08
フォーマットを指定する場合、 Get-Dateコマンドレットは-Formatパラメータ、 NowプロパティはtoStringメソッドを使います。
Get-Date -Format "yyyy/MM/dd" [datetime]::Now.ToString("yyyy-MM-dd") # 実行結果 2022/01/28 2022-01-28
年・月・日のみを取得
年、月、日のみを取得する場合、 DateTimeクラスの各プロパティを使用します。
$d = [datetime]::Now $d $d.Year $d.Month $d.Day # 実行結果 2022年1月28日 4:14:38 2022 1 28
時・分・秒・ミリ秒のみを取得
同じくDateTimeクラスの次の各プロパティを使用します。
$d = [datetime]::Now $d $d.Hour $d.Minute $d.Second $d.Millisecond # 実行結果 2022年1月28日 4:19:32 4 19 32 671
(詳細記事:今日の日付と現在時刻を取得する)
日付をyyyymmdd、時刻をhhmmss形式で取得
年月日のフォーマット(yyyy/MM/dd)
年・月・日・曜日に関する主な書式指定子。
書式指定子 | 内容 |
---|---|
yy | 年 2桁(00 - 99) |
yyyy | 年 4桁 |
M | 月(1 - 12) |
MM | 月(01 - 12) |
d | 日(1 - 31) |
dd | 日(01 - 31) |
ddd | 曜日の省略名(日 - 土) |
dddd | 曜日の完全名(日曜日 - 土曜日) |
Get-Dateコマンドレットの場合
Get-Date -Format "yyyy/MM/dd" # 実行結果 2022/01/28
DateTimeオブジェクトのNowプロパティの場合
[datetime]::Now.ToString("yyyy/MM/dd") # 実行結果 2022/01/28
時刻のフォーマット(HH:mm:ss)
時間・分・秒・ミリ秒に関する主な書式指定子。
書式指定子 | 内容 |
---|---|
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) |
Get-Date -Format "HH:mm:ss" [datetime]::Now.ToString("HH:mm:ss") # 実行結果 10:48:04 10:48:04
(詳細記事: 日付をyyyymmdd、時刻をhhmmss形式で取得)
曜日を英語・日本語で取得する
曜日を英語で取得する
DateTimeクラスのDayOfWeekプロパティを使うと 曜日を英語(Sunday, Monday, ..)で取得できます。
[datetime]::Now [datetime]::Now.DayOfWeek # 実行結果 2022年1月29日 3:30:53 Saturday
特定の日付の曜日を取得したい場合、 日付の文字列をDateTime型に変換してからDayOfWeekプロパティを使用します。
$d = [datetime]"2022/1/2" $d.DayOfWeek # 実行結果 Sunday
曜日を日本語で取得する
曜日を日本語で取得する場合、 DatetimeクラスのToStringメソッドの書式指定で曜日だけを指定します。 具体的には「ToString("dddd")」や「ToString("ddd")」と記述します。
$d = [datetime]::Now $d $d.ToString("dddd") $d.ToString("ddd") # 実行結果 2022年1月29日 3:55:24 土曜日 土
(詳細記事:曜日を英語・日本語で取得する)
日付・時刻の計算(加算と減算)
PowerShellで日付や時刻の計算を行う場合、 DateTimeクラスの 年・月・日・時間・分・秒・ミリ秒それぞれの計算用メソッドを使って 加算・減算を行います。
メソッド名とその用途をまとめて紹介します。
メソッド名 | 用途 |
---|---|
AddYears | 年 |
AddMonths | 月 |
AddDays | 日 |
AddHours | 時間 |
AddMinutes | 分 |
AddSeconds | 秒 |
AddMilliseconds | ミリ秒 |
それぞれのメソッドの引数に加算・減算したい数値を指定します。 加算する場合は正数、減算する場合は負数(マイナスの数値)を指定。
$d = [datetime]"2022/1/1" $d # 加算 $d.AddYears(5) # 減算 $d.AddYears(-5) # 実行結果 2022年1月1日 0:00:00 2027年1月1日 0:00:00 2017年1月1日 0:00:00
(詳細記事:日付・時刻の計算(加算と減算))
日時を比較して差(日数・時間数等)を取得する
PowerShellで2つの日時を比較して、 間隔(日数の差や時間の差)を求める場合、 New-TimeSpanコマンドレットを使用します。
New-TimeSpan [[-Start] 開始日時] [[-End] 終了日時]
開始日時を"2022/1/1"、終了日付を1か月後の"2022/2/1"として TimeSpanオブジェクトを作成し、値を表示してみます。 時間については両方とも"00:00:00"です。
$ts = New-TimeSpan "2022/1/1" "2022/2/1" $ts # 実行結果 Days : 31 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 0 Ticks : 26784000000000 TotalDays : 31 TotalHours : 744 TotalMinutes : 44640 TotalSeconds : 2678400 TotalMilliseconds : 2678400000
個別に取得する場合は次のように記述します。
$ts = New-TimeSpan "2022/1/1" "2022/2/1" $ts.TotalDays $ts.TotalHours # 実行結果 31 744
(詳細記事: 日時を比較して差(日数・時間数等)を取得する)