日付と時刻を取得するコードdateとtime

BASH,bat,バッチ

日時を取得するバッチ

日付を取得するコマンドは「date」、時刻を取得するコマンドは「time」を使います。

「date」と「time」は変数として利用できます。

こちらから指定する必要がなく、日付と時刻が常に格納しています。

例えば、dateとtimeのコマンドを入力すると、

このように、日時を管理者権限で変更することが可能です。

パソコンに内臓された時計の日付と時刻を変更する場合は「date」、「time」コマンドを使うことで変更ができるのです。

変数としても表示ができるので、次節で解説します。

コマンドで日時の表示だけ行う場合はオプションの「/t」を使用します。

実際にやってみましょう。

コード

date /t

time /t

dateとtimeを変数として表示すると、

日付を表示

echo %date%

と打ち込みます。

現在の「年/月/日」が表示されます。

時刻を表示

echo %time%

と打ち込みます。

現在の時刻「時:分:秒.コンマ秒」を表示しています。

このようにコマンドや変数として、日時を表示できますが、実務で使用するにはいらない内容が含まれています。

コンマ秒や「/」、「:」は必要ない場合が多いですよね。

そこで利用しやすい、見やすい日時の表示に直す方法を次節で解説します。

日付と時刻の表示を自分好みに表示しなおす(例:2022/09/22 → 220922)

「date」と「time」から取得できる日付や時刻には、「/」や「:」が含まれていてファイル名などに不向き。

コンマ秒も日常で使用しません。

そこで文字列の抽出、置換機能を使用することで、自分好みの表示にすることが可能です。

文字列の抽出とは?

変数「date」の場合、全体を参照するには「%date%」とします。

文字列を抽出するなら「%date:~3%」や「%date:~1,2%」のように、[:~]に続けて数字を指定すると任意の文字列を抽出できます。

この結果が意味することは下記のとおり解説できます。

date変数で表した「2022/09/06」を文字順に並び変えると下記のとおりになります。

1文字目2文字目3文字目4文字目5文字目6文字目7文字目8文字目9文字目10文字目
2022/09/06

「:~3」は頭から3文字までをなくし、4文字以降を抽出するという意味なので、「2/09/06」となります。

「:~1,2」は頭から1文字までをなくし、2~3文字を抽出するという意味なので、「02」となります。

このような文字を抽出するやり方を下記のとおりまとめました。

書式意味
%date%変数Vの値全体%date%」 ⇒ 「2022/09/06
%date:~x%x文字目から、最後まで%date:~3%」 ⇒ 「2/09/06」
%date:~x,y%x文字目から、y文字分%date:~1,2%」 ⇒ 「02

抽出した日付を別の変数で格納する

前節のように「:〜」を使用すれば、変数dateやtimeをある文字から抽出することができます。

しかし、このままだと利用しづらいので、新たにdateやtimeで抽出した文字を違う変数で格納します。

たとえば、年だけを抽出して、別の変数(year)に変換します。

コード

set year=%date:~0,4%

これをecho %year%で確認してみましょう。

このように文字を抽出した変数dateを別の変数に格納することができました。

別の変数に格納することで、いろんな組み合わせが可能になります。

例えば、日付を「20161011」のような形式に変換する方法を紹介します。

「/」はファイル名で使用できないので、取り除いた形となり使い勝手が良くなります。

日付を/除いた形式に変換する

set year=%date:~0,4%

set month=%date:~5,2%

set day=%date:~8,2%

set datehenkan=%year%%month%%day%

echo %datehenkan%

このコードを「日付.bat」として、コマンドスクリプトで実行してみましょう。

変数「datehenkan」に目的の書式の日付を得ることに成功しました。

「set」を使用して、文字を切り取り、別の変数に変換しています。

set year=%date:~0,4%   ▶︎2022/09/06

set month=%date:~5,2%▶︎2022/09/06

set day=%date:~8,2%    ▶︎2022/09/06

赤文字の部分を切り取ってます。

次にそれぞれの変数「year」「month」「day」を組み合わせて「20220906」として、「datehenkan」の変数に格納しています。

「set」コマンドは変数を設定するコマンドです。次の機会で紹介します。

抽出した時間を別の変数で格納する

時刻についても同じやり方です。

変数「time」は「8:27:15.92」となっていますので、時分のみを結合した「0827」にします。

下記のバッチファイルを作成し、コマンドスクリプトで起動します。

コード(時間.bat)

set hour=%time:~0,2%

set hour=%hour: =0%

set minite=%time:~3,2%

set timehenkan=%hour%%minite%

echo %timehenkan%

2行目の「%hour: =0%」は重要です。

少し分かりにくいですが、「:」と「=」の間に空白があります。

2行目のsetコマンドにより「 503」▶「0503」となり、0が加えられました。

コメント

タイトルとURLをコピーしました