更新日:2020/08/20
このページでは Windows 10 環境における日付と日付の間の日数を求めるサンプルプログラムを紹介します。
大きく分けて次の2通りの方法があります。
以下の例では 20200820 (2020年8月20日) と 20200701 (2020年7月1日) の間の日数を計算しています。
DateTime型に変換した後引き算しています。引き算の結果は TimeSpan 型で戻されます。日数を取得するには Days プロパティにアクセスします。
サンプルコード:
$before = [DateTime]::ParseExact("20200701","yyyyMMdd", $null);
$after = [DateTime]::ParseExact("20200820","yyyyMMdd", $null);
$TimeSpan= ($after - $before)
$TimeSpan.Days
$TimeSpan.Hours
$TimeSpan.Minutes
$TimeSpan.Seconds
実行結果:
50
0
0
0
次の例では2020年8月20日 18時12分5 秒と 2020年8月21日 20時13分15秒 との差を求めています。
差は1日2時間1分10秒です。
TimeSpanの各プロパティで計算されていることが分かります。
サンプルコード:
$before = [DateTime]::ParseExact("20200820 18:12:05","yyyyMMdd HH:mm:ss", $null);
$after = [DateTime]::ParseExact("20200821 20:13:15","yyyyMMdd HH:mm:ss", $null);
$TimeSpan= ($after - $before)
$TimeSpan.Days
$TimeSpan.Hours
$TimeSpan.Minutes
$TimeSpan.Seconds
実行結果:
1
2
1
10
2020年8月20日 18時0分0秒 に 1時間30分を足しています。
TimeSpan により 1時間30分を作成し引き算することにより計算しています。
サンプルコード:
$before = [DateTime]::ParseExact("20200820 18:00:00","yyyyMMdd HH:mm:ss", $null);
$TimeSpan = New-TimeSpan "00:01:30" "00:00:00"
write-host ($before - $TimeSpan)
実行結果:
2020/08/20 18:01:30
2020年8月20日 18時0分0秒 に 1時間30分を足しています。
今度は単純に AddHours と AddMinutes を使用しています。
サンプルコード:
$before = [DateTime]::ParseExact("20200820 18:00:00","yyyyMMdd HH:mm:ss", $null);
$before = $before.Addhours(1)
$before = $before.AddMinutes(30)
write-host $before
実行結果:
2020/08/20 19:30:00
DateTime を String 型に変換するにはToString を使用します。
次のサンプルは明日の日付を文字列型で出力しています。
サンプルコード:
$tomorrow = ((Get-Date).AddDays(1)).ToString(“yyyy/MM/dd”)
write-host $tomorrow
$tomorrow.GetType()
実行結果:
2020/08/21
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018