コンピュータの前にずっと座っていると、ときどき時間の感覚が鈍くなって、「はて、今日は何日だったか」なんて考えることがある。今ではPCで簡単に時刻やカレンダーを見ることができる。端末からコンピューターを使っていた時代なら、日付やカレンダーを表示するコマンドがあった。
単純に今の日付や時刻、カレンダーがわかっても、たとえば「160日後に失効します」なんて通知が表示されたとき、その日を計算するのは面倒だ。Windowsの電卓には、「日付の計算」があるが、スタートメニューを開いて、電卓を起動、切り替えて数値を入力というのも手間である。コンピューターなんだから、日付の計算ぐらい簡単に済ませたい。
この連載の今年最初の記事(「PowerShellでWindowsが起動してからの時間を計算する」)で、Windowsの起動時間をPowerShellで計算する方法を紹介したが、日付に関してはきちんと説明してなかった。そこで今回は、Get-Dateコマンドと日付の計算をする方法を解説する。
コマンドラインで日付を得る
cmd.exeには、日付の計算機能が標準では備わっていないので、ここではWindows PowerShellを使う(PowerShellでも同じ)。まずは今日の日付だが、これは「Get-Date」コマンドで表示できる。なお、Get-Dateは、Dateと略すことも可能だ(ただし、Date.exeなどがPathに存在しない場合)。
Get-Dateだけを実行すると、現在の日時が表示されるが、これは、「設定」→「時刻と言語」→「言語と地域」→「地域設定」にある「日付(長い形式)」による表示。設定を変更すれば、他の形式でも可能だ。
この形式、以前のWindowsでは、書式指定文字で指定できたのだが、現在はいくつかのパターンから選ぶようになっている。長くはなるが、できれば曜日も表示させたい。パターンから選んでもいいが、書式指定がわかるなら、レジストリで好みのパターンに変更できる。現在設定されている「日付(長い形式)」は、
get-ItemProperty 'HKCU:\Control Panel\International\' slongDate
で表示できる。
たとえば、「2022年10月2日 10時00分 日曜日」のようなパターンにしたいのであれば、
Set-ItemProperty 'HKCU:\Control Panel\international' -name sLongDate -Value "yyyy'年'MM'月'dd'日 'dddd"
とする。これでget-dateを実行すると、曜日が表示されるようになる(PowerShellは再起動が必要)。
以後の解説では、この形式であることを前提にしている。なお、一部のアプリケーションは、日付文字列が長すぎると表示がおかしくなったり、落ちてしまうというヒドイ作りになっていることがある。変更はご自身のリスクで実行してほしい。
なお、英語表記でもよければ、前記のレジストリ設定を行わなくても「get-date -Format 'r'」で、RFC1123形式が出力され、先頭に曜日がある。
get-dateコマンドの「-Format」オプションには、日付書式文字を指定できる。これは、.NET Frameworkと同じで、標準では下の表のような表示パターンが指定できる。
なお、細かく書式を指定するときには「カスタム日時指定文字列」を使う。これについては、以下に解説がある。
●カスタム日時形式文字列
https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings
続いては任意の日付を得る
get-dateは、そのままでは現在日時を返すが、特定の日時を指定したいこともあるだろう。たとえば、「2022年1月1日」を指定する場合、簡単な方法として、
get-date '2022/1/1'
とする。シングルクオートの中の書式は意外に自由が利く。たとえば'2022年1月1日'でもいいし、'1 Jan 2022'でもいい。1月1日なら実は'2022年'だけでもよいが'2022'ではエラーになる。文字列の場合、省略された部分があるとき、月や日付なら1が、時刻なら0が仮定される。
もう1つは、get-dateのオプションを指定する方法がある。get-dateには表のような日付、時刻指定のオプションがあり、これで日時を指定できる。
なお、矛盾がなければ、文字列による日時指定とオプションによる日時指定は混在できる。たとえば、「2022年8月1日」の午前3時は、
get-date '2022/8/1' -Hour 3
と指定できる。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 - この連載の一覧へ