Windows10のコマンドで日付・曜日・時刻を取得する方法

Windows10のコマンドで日付・曜日・時刻を取得する方法

Windows環境で、WindowsコマンドやPowerShellを利用していると、日付や曜日、時刻などの情報を基にして処理を分岐させたりしたい場合があります。

そこで、ここではWindows10でWindowsコマンドやPowerShellを利用して、日付や曜日、時刻を取得するテクニックを紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
Windows10 Pro 64bit 2004

日付

今日

Windowsコマンドで現在の日付を取得するときは、次のように実行します。

C:\> date /t
2020/07/14

区切り文字が不要なときは、次のように実行します。

C:\> echo %date:/=%
20200714

PowerShellで現在の日付を取得するときは、Get-Dateコマンドレットを利用します。

PS C:\> Get-Date
2020年7月14日 21:39:11

書式を指定すれば、さまざまな形式で日付を表示できます。

PS C:\> Get-Date -Format "yyyyMMdd"
20200714

日付の編集などを行うのであれば、ToStringメソッドで文字列形式に変換するのよいでしょう。

PS C:\> (Get-Date).ToString("yyyyMMdd")
20200714

n日前/n日後

Windowsコマンドでは、n日前やn日後の日付を取得するのは難しいですが、PowerShellならAddDaysメソッドを使って簡単に取得できます。

たとえば、1日前(昨日)の日付を取得したいときは、次のように実行します。

PS C:\> (Get-Date).AddDays(-1).ToString("yyyyMMdd")
20200713

1日後(明日)の日付を取得したいときは、次のように実行します。

PS C:\> (Get-Date).AddDays(1).ToString("yyyyMMdd")
20200715

曜日

Windowsコマンドでは、曜日を取得するのは難しいですが、PowerShellならGet-Dateコマンドレットで簡単に取得できます。

今日の曜日を取得する場合は、次のように実行します。

PS C:\> (Get-Date).ToString("ddd")
月
PS C:\> (Get-Date).ToString("dddd")
月曜日
PS C:\> (Get-Date).DayOfWeek
Monday

特定の日の曜日を取得する場合は、次のように実行します。

PS C:\> (Get-Date "2020/7/23").ToString("ddd")
木
PS C:\> (Get-Date "2020/7/23").DayOfWeek
Thursday

数値で曜日を取得する場合は、value__を使用します。(ダブルアンダースコアです)

PS C:\> (Get-Date).DayOfWeek.value__
1
PS C:\> (Get-Date "2020/7/23").DayOfWeek.value__
4

数値は、0が日曜日、1が月曜日、2が火曜日・・・6が土曜日となります。

時刻

現在時刻

Windowsコマンドで現在の時刻を取得するときは、次のように実行します。

C:\> time /t
22:06

区切り文字が不要なときは、次のように実行します。

C:\> echo %time:~0,2%%time:~3,2%
2206

秒までを表示したいときは、次のように実行します。

C:\> echo %time:~0,2%%time:~3,2%%time:~6,2%
220614

PowerShellで現在の時刻を取得するときは、次のように実行します。

PS C:\> Get-Date -Format "HH:mm:ss"
22:06:14
PS C:\> (Get-Date).ToString("HH:mm:ss")
22:06:14

n時間前/n時間後

Windowsコマンドでは、n時間前やn時間後を取得するのは難しいですが、PowerShellなら簡単です。

PowerShellで、n時間前やn時間後の日付を取得したいときは、AddHoursメソッドを利用して簡単に取得できます。

たとえば、1時間前の時刻を取得したいときは、次のように実行します。

PS C:\> (Get-Date).AddHours(-1).ToString("HHmmss")
210614

1時間後の時刻を取得したいときは、次のように実行します。

PS C:\> (Get-Date).AddHours(1).ToString("HHmmss")
230614

あとがき

ちなみに、PowerShellでしか取得できないような値を、バッチフィルで利用したいときは、以下に紹介している方法でバッチフィル内で取得できるようになります。

たとえば、前日日付をバッチファイル内で変数に格納したい場合は、次のようにバッチファイルを記述することで実現できます。

@echo off

set d=%~dp0

echo (Get-Date).AddDays(-1).ToString("yyyyMMdd") >%d%yesterday.ps1

for /f "tokens=1" %%i in ('powershell -NoProfile -ExecutionPolicy Unrestricted %d%yesterday.ps1') do set ymd=%%i
echo %ymd%

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ
トップへ戻る