
Windows環境で、WindowsコマンドやPowerShellを利用していると、日付や曜日、時刻などの情報を基にして処理を分岐させたいときがあります。
そこでここでは、WindowsコマンドやPowerShellを利用して、日付や曜日、時刻を取得するテクニックを紹介します。
目次
日付を取得する
今日
Windowsコマンドで現在の日付を取得するときは、次のように実行します。
> date /t
2020/07/14区切り文字が不要なときは、次のように実行します。
> echo %date:/=%
20200714PowerShellで現在の日付を取得するときは、Get-Dateコマンドレットを利用します。
PS> Get-Date
2020年7月14日 21:39:11書式を指定すれば、さまざまな形式で日付を表示できます。
PS> Get-Date -Format 'yyyyMMdd'
20200714
PS> Get-Date -Format 'yyyyMM'
202007日付の編集などを行うのであれば、ToStringメソッドで文字列形式に変換するのよいでしょう。
PS> (Get-Date).ToString("yyyyMMdd")
20200714n日前/n日後
Windowsコマンドでは、n日前やn日後の日付を取得するのは難しいですが、PowerShellならAddDaysメソッドを使って簡単に取得できます。
たとえば、1日前(昨日)の日付を取得したいときは、次のように実行します。
PS> (Get-Date).AddDays(-1).ToString("yyyyMMdd")
202007131日後(明日)の日付を取得したいときは、次のように実行します。
PS> (Get-Date).AddDays(1).ToString("yyyyMMdd")
20200715月末
PowerShellのAddDaysやAddMonthメソッドを使えば、月末を取得することもできます。
たとえば、今月末の日付を取得したいときは、翌月1日の前日の日付を求めることで実現できます。
PS> (get-date -day 1).AddMonths(1).AddDays(-1).ToString("yyyyMMdd")
20200731曜日を取得する
Windowsコマンドでは、曜日を取得するのは難しいですが、PowerShellならGet-Dateコマンドレットで簡単に取得できます。
今日の曜日を取得する場合は、次のように実行します。
PS> (Get-Date).ToString("ddd")
月PS> (Get-Date).ToString("dddd")
月曜日PS> (Get-Date).DayOfWeek
Monday特定の日の曜日を取得する場合は、次のように実行します。
PS> (Get-Date "2020/7/23").ToString("ddd")
木PS> (Get-Date "2020/7/23").DayOfWeek
Thursday数値で曜日を取得する場合は、value__を使用します。(ダブルアンダースコアです)
PS> (Get-Date).DayOfWeek.value__
1PS> (Get-Date "2020/7/23").DayOfWeek.value__
4数値は、0が日曜日、1が月曜日、2が火曜日・・・6が土曜日となります。
時刻を取得する
現在時刻
Windowsコマンドで現在の時刻を取得するときは、次のように実行します。
> time /t
22:06区切り文字が不要なときは、次のように実行します。
> echo %time:~0,2%%time:~3,2%
2206秒までを表示したいときは、次のように実行します。
> echo %time:~0,2%%time:~3,2%%time:~6,2%
220614PowerShellで現在の時刻を取得するときは、次のように実行します。
PS> Get-Date -Format "HH:mm:ss"
22:06:14PS> (Get-Date).ToString("HH:mm:ss")
22:06:14n時間前/n時間後
Windowsコマンドでは、n時間前やn時間後を取得するのは難しいですが、PowerShellなら簡単です。
PowerShellで、n時間前やn時間後の日付を取得したいときは、AddHoursメソッドを利用して簡単に取得できます。
たとえば、1時間前の時刻を取得したいときは、次のように実行します。
PS> (Get-Date).AddHours(-1).ToString("HHmmss")
2106141時間後の時刻を取得したいときは、次のように実行します。
PS> (Get-Date).AddHours(1).ToString("HHmmss")
230614あとがき
ちなみに、PowerShellでしか取得できない値を、Windowsコマンド(バッチフィル)から使いたいとき、たとえば、前日日付をWindowsコマンド内で使いたいときは、次のように記述することで前日日付を取得できます。
> for /f "tokens=1" %i in ('powershell -command "(Get-Date).AddDays(-1).ToString('yyyyMMdd')"') do set ymd=%i
> echo %ymd%