date 是 Linux 顯示與設定系統日期時間的核心工具,支援豐富的格式化輸出 (RFC 2822、ISO 8601、自訂格式)、UTC/本地時間切換、腳本內嵌與備份檔命名。本文完整整理參數、格式代碼表與實戰範例。

date
# Thu Dec 5 22:55:41 CST 2024
| 格式代碼 | 說明 | 範例輸出 |
|---|---|---|
| %Y | 四位數年份 | 2024 |
| %m | 月份 (01-12) | 12 |
| %d | 日期 (01-31) | 05 |
| %H | 小時 (00-23) | 22 |
| %M | 分鐘 (00-59) | 55 |
| %S | 秒數 (00-60) | 41 |
| %F | %Y-%m-%d (ISO 8601 日期) | 2024-12-05 |
| %T | %H:%M:%S (時間) | 22:55:41 |
| %A | 完整星期名 | Thursday |
| %a | 縮寫星期名 | Thu |
| %B | 完整月份名 | December |
| %b | 縮寫月份名 | Dec |
| %s | Unix Epoch 秒數 | 1733410541 |
| %z | 時區偏移 (+0800) | +0800 |
| %Z | 時區縮寫 | CST |
| 參數 | 說明 |
|---|---|
| -R | RFC 2822 格式 (Thu, 05 Dec 2024 22:55:41 +0800) |
| -u / --utc | 顯示/設定 UTC 時間 |
| -d STRING | 顯示指定字串描述的時間 (如 '2 days ago', 'next Friday') |
| -s STRING | --set=STRING 設定系統時間 (需 root) |
| -f FILE | --file=FILE 從檔案讀取日期字串逐行處理 |
| --reference=FILE | 顯示檔案最後修改時間 |
date +"Date: %a %b-%d-%Y Time: %T Week: %W"
# Date: Thu Dec-05-2024 Time: 22:55:41 Week: 49
date --set="2024-12-25 09:17:00"
date -d "2 days ago"
date -d "next Monday"
date -d "1970-01-01 1234567890 sec" # Epoch 轉換
#!/bin/bash
DATETIME=$(date +"DATE: %a %b-%d-%Y TIME: %T WEEK: %W")
echo $DATETIME
tar czfv /backup/backup-$(date +%F).tar.gz /home/user/Documents
# 產生 backup-2024-12-05.tar.gz
hwclock --hctosys # BIOS → 系統
hwclock --systohc # 系統 → BIOS
# 查看可用時區
timedatectl list-timezones
# 設定時區 (永久)
timedatectl set-timezone Asia/Taipei
# 或傳統方式
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
date 格式化字串 (+%F %T 等) 是 Shell 腳本、日誌命名、定時任務、時間運算的通用語言。熟記 %Y%m%d、%F、%T、%s、-d 相對時間、-u UTC 等核心用法,即可應對 95% 日期時間處理需求。系統時間設定請搭配 NTP/chrony 自動同步,避免手動設定造成叢集時間不一致。