dateコマンドの使い方|日付・時刻の表示から書式指定・設定変更までコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, システム管理コマンド > dateコマンドの使い方|日付・時刻の表示から書式指定・設定変更までコマンド
「ログのタイムスタンプを特定の形式で取得したい」
「シェルスクリプトで日付付きファイル名を作りたい」
こうした場面で欠かせないのが、dateコマンドです。

この記事では、dateコマンドの基本的な使い方から書式指定、相対日付の指定、シェルスクリプトでの活用法まで、実務で必要な知識をまとめて解説します。
【この記事でわかること】
・date +%Y-%m-%dで書式指定出力、$(date +%Y%m%d)でスクリプト内のファイル名生成に使える
・date -d "yesterday"などで相対日付を指定できる。バックアップローテーションに便利
・date +%sでUNIXタイムスタンプ取得→処理時間計測にも活用できる

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

dateコマンドとは?日付・時刻操作の基本

dateは、Linuxシステムの日付と時刻を表示・設定するコマンドです。

単に現在時刻を確認するだけでなく、書式を指定して任意のフォーマットで日時を出力できるため、シェルスクリプトでのファイル名生成やログ記録で頻繁に使われます。

また、「昨日の日付」「3日前」といった相対的な日時指定もでき、バックアップスクリプトなどで重宝します。

dateコマンドの基本的な使い方

1. 現在の日時を表示する

引数なしで実行すると、現在のシステム日時が表示されます。

$ date 2026年 3月 17日 月曜日 10:30:45 JST

表示形式はシステムのロケール設定によって異なります。日本語環境では上記のように表示されます。

2. 書式を指定して表示する

+ に続けて書式文字列を指定すると、任意のフォーマットで日時を出力できます。

# YYYY-MM-DD形式 $ date +%Y-%m-%d 2026-03-17 # YYYY/MM/DD HH:MM:SS形式 $ date "+%Y/%m/%d %H:%M:%S" 2026/03/17 10:30:45 # 年月日のみ(ハイフンなし) $ date +%Y%m%d 20260317

※ 書式文字列にスペースを含む場合は、ダブルクォートで囲む必要があります。

3. よく使う書式一覧

以下がdateコマンドで頻繁に使う書式指定子です。

%Y:西暦(4桁)例:2026
%m:月(01~12)
%d:日(01~31)
%H:時(00~23、24時間表記)
%M:分(00~59)
%S:秒(00~59)
%T:時刻(%H:%M:%Sと同じ)例:10:30:45
%A:曜日(ロケール依存)例:月曜日
%s:UNIXタイムスタンプ(1970年1月1日からの秒数)
%N:ナノ秒
%Z:タイムゾーン名 例:JST

4. 特定の日時を指定して表示する(-dオプション)

-d(または --date)オプションを使うと、現在以外の日時を指定して表示できます。相対的な指定も可能です。

# 昨日の日付を表示する $ date -d "yesterday" +%Y-%m-%d 2026-03-16 # 3日前の日付を表示する $ date -d "3 days ago" +%Y-%m-%d 2026-03-14 # 1週間後の日付を表示する $ date -d "1 week" +%Y-%m-%d 2026-03-24 # 来月の1日を表示する $ date -d "next month" +%Y-%m-01 2026-04-01 # 特定の日時を指定する $ date -d "2026-01-15 09:00:00" "+%Y年%m月%d日 %H時%M分" 2026年01月15日 09時00分

この機能はシェルスクリプトで「昨日のログファイル名」を生成するときなどに非常に便利です。

実務で使えるdate活用テクニック

5. シェルスクリプトで日付付きファイル名を作る

バックアップスクリプトで最もよく使うパターンです。$(date +書式) でコマンド置換を使います。

# バックアップファイルに日付を付ける $ tar czf backup_$(date +%Y%m%d).tar.gz /var/www/html/ # 日時(時分秒)まで付ける $ cp /etc/httpd/conf/httpd.conf httpd.conf.$(date +%Y%m%d_%H%M%S) # 昨日の日付でログファイル名を生成する $ YESTERDAY=$(date -d "yesterday" +%Y%m%d) $ cat /var/log/app/access_${YESTERDAY}.log

6. ログファイルにタイムスタンプを付ける

スクリプトの実行ログにタイムスタンプを付けるのは、トラブル時の原因調査に役立ちます。

# スクリプト内でタイムスタンプ付きログを出力する例 echo "[$(date '+%Y-%m-%d %H:%M:%S')] バックアップ開始" >> /var/log/backup.log tar czf /backup/data_$(date +%Y%m%d).tar.gz /var/data/ echo "[$(date '+%Y-%m-%d %H:%M:%S')] バックアップ完了" >> /var/log/backup.log

7. 経過時間を計測する

%s でUNIXタイムスタンプ(秒数)を取得できるので、処理の開始時刻と終了時刻の差で経過時間を計測できます。

# 処理時間を計測するスクリプト例 START=$(date +%s) # ここに時間のかかる処理を書く sleep 5 END=$(date +%s) ELAPSED=$((END - START)) echo "処理時間: ${ELAPSED}秒"

8. システム日時を変更する

-s オプションでシステムの日時を手動設定できます。root権限が必要です。

# システム日時を設定する(root権限が必要) $ sudo date -s "2026-03-17 10:00:00" 2026年 3月 17日 火曜日 10:00:00 JST

ただし、現在のLinuxでは timedatectl コマンドを使うのが推奨されています。NTP同期が有効な環境で date -s を実行すると、すぐにNTPサーバーの時刻に戻されてしまうためです。

# timedatectlで日時を設定する(推奨) $ sudo timedatectl set-time "2026-03-17 10:00:00" # 現在の時刻同期の状態を確認する $ timedatectl status

dateコマンドのトラブルシュートとよくあるミス

「invalid date」が出る場合

dateコマンドで「invalid date」エラーが出る原因のほとんどは、日付文字列のフォーマットが正しくないケースです。

# NG - スラッシュ区切りは環境によって解釈が異なる $ date -d "03/17/2026" date: invalid date '03/17/2026' # OK - ハイフン区切りのISO 8601形式を使う $ date -d "2026-03-17"

日付の指定は YYYY-MM-DD(ISO 8601形式)を使うのが最も確実です。

タイムゾーンが意図と異なる場合

dateコマンドはシステムのタイムゾーン設定に従って動作します。異なるタイムゾーンで表示したい場合は、TZ 環境変数を一時的に設定します。

# UTC(協定世界時)で表示する $ TZ=UTC date Mon Mar 17 01:30:45 UTC 2026 # ニューヨーク時間で表示する $ TZ=America/New_York date # 現在のタイムゾーン設定を確認する $ timedatectl show --property=Timezone Timezone=Asia/Tokyo

本記事のまとめ

やりたいこと コマンド
現在の日時を表示する date
YYYY-MM-DD形式で表示する date +%Y-%m-%d
時刻のみ表示する date +%T
昨日の日付を取得する date -d "yesterday" +%Y-%m-%d
N日前の日付を取得する date -d "3 days ago" +%Y-%m-%d
UNIXタイムスタンプを取得する date +%s
日付付きファイル名を生成する date +%Y%m%d
UTC時間で表示する TZ=UTC date

dateコマンドを使いこなして、シェルスクリプトの自動化を本格的に進めたいですか?

日付処理はバックアップ・ログローテーション・監視スクリプトの基盤です。現場レベルのスキルを体系的に身につけましょう。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。