晴耕雨読

working in the fields on fine days and reading books on rainy days

[PowerShell] 文字列を日付に変換して時間差を求める (New-TimeSpan)

PowerShellで文字列を日付に変換するには [DateTime]::ParseExact を使用し、2つの日時の時間差を求めるには New-ItmeSpan を使用します。

PowerShellで文字列から日付に変換する場合は、DateTimeクラスのParseExactメソッドを使います。 第一引数に変換したい文字列、第二引数にカスタム日時形式文字列、第三引数にロケール情報 (nullでも可) を渡します。

また、日時の比較は New-ItmeSpan コマンドレットを使います。 第一引数と第二引数の日時の差を求めて、以下のメンバを持つオブジェクトを返します。

  • Days : 日数の差
  • Hours : 時の差
  • Minutes : 分の差
  • Seconds : 秒の差
  • Milliseconds : ミリ秒の差

入力した文字列が今日の日付かを確認するプログラムの例を以下に示します。

$datetime_str = "2022/04/21"
# 文字列を日付に変換する
$datetime = [DateTime]::ParseExact($datetime_str, "yyyy/MM/dd", $null)
# 日付と現在時刻の差を求める
$diff = New-TimeSpan $datetime (Get-Date)
if ($diff.Days -ne 0) {
    "入力文字列は、今日の日付ではありません。"
}

以上です。

参考文献