Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

date / cal

『date』は現在の日付・時刻を取得・フォーマットするコマンドです。『cal』はカレンダーを表示します。シェルスクリプトでのログファイル名生成やバックアップ命名に欠かせないコマンドです。

構文
# 現在の日付・時刻を表示
date

# フォーマットを指定して表示
date +フォーマット文字列

# 日付をフォーマットして変数に代入
today=$(date +%Y-%m-%d)

# 指定した日時を表示(GNU date のみ)
date -d "日時文字列"

# N日前/後の日付を計算(GNU date のみ)
date -d "7 days ago" +%Y-%m-%d

# カレンダーを表示
cal
cal 月 年
フォーマット文字列一覧
フォーマット概要・出力例
%Y西暦4桁(例: 2026)です。
%m月(01〜12)です。
%d日(01〜31)です。
%H時間(00〜23)です。
%M分(00〜59)です。
%S秒(00〜59)です。
%A曜日の英語フルネーム(例: Friday)です。
%a曜日の英語略称(例: Fri)です。
%B月の英語フルネーム(例: March)です。
%sUnix タイムスタンプ(エポック秒)です。
%Zタイムゾーン名(例: JST)です。
%Y%m%dYYYYMMDD 形式(例: 20260306)です。
%Y-%m-%d %H:%M:%SISO 8601 風(例: 2026-03-06 12:00:00)です。
サンプルコード

現在の日付を表示します。

date
Fri Mar  6 12:00:00 JST 2026

フォーマットを指定して日付と日時を表示します。

echo "今日: $(date +%Y-%m-%d)"
echo "今すぐ: $(date '+%Y-%m-%d %H:%M:%S')"
今日: 2026-03-06
今すぐ: 2026-03-06 12:00:00

バックアップファイル名に日付を使います。

today=$(date +%Y%m%d)
tar -czf "backup_${today}.tar.gz" /var/www/html/
echo "バックアップ完了: backup_${today}.tar.gz"
バックアップ完了: backup_20260306.tar.gz

ログに日時スタンプを付ける関数を定義します。

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
log "処理開始"
log "データ取得完了"
[2026-03-06 12:00:00] 処理開始
[2026-03-06 12:00:03] データ取得完了

Unix タイムスタンプを使って処理時間を計測します。

start=$(date +%s)
sleep 2
end=$(date +%s)
echo "処理時間: $((end - start)) 秒"
処理時間: 2 秒

GNU date(Linux)で相対的な日付を計算します。

# 7日後の日付(Linux)
date -d "7 days" +%Y-%m-%d

# 7日前の日付(Linux)
date -d "7 days ago" +%Y-%m-%d
2026-03-13
2026-02-27

macOS(BSD date)では『-v』オプションを使います。

# 7日後の日付(macOS)
date -v+7d +%Y-%m-%d

# 7日前の日付(macOS)
date -v-7d +%Y-%m-%d

カレンダーを表示します。

cal 3 2026
     March 2026
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
概要

スクリプトでのバックアップ命名には $(date +%Y%m%d)$(date +%Y%m%d_%H%M%S) が定番です。ログ出力には $(date '+%Y-%m-%d %H:%M:%S') を関数化しておくと便利です。

date -d による相対日付計算は GNU date(Linux)専用の機能です。macOS(BSD date)では date -v+7d のように書きます。移植性が必要な場合は Python の python3 -c "from datetime import..." を使う方法もあります。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。