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

(詳細記事: 日時を比較して差(日数・時間数等)を取得する

PowerShell