date 是 Linux 查看與設定系統日期時間的核心指令。本文詳細說明格式化參數、設定語法、權限需求與 Shell 腳本實戰範例。
指令基本語法
date [選項] [+輸出格式] # 顯示時間
date [選項] -s "時間字串" # 設定時間(需 root)
常用選項
| 選項 | 說明 |
| -d, --date=字串 | 顯示指定字串描述的時間(非設定) |
| -s, --set=字串 | 設定系統時間 |
| -u, --utc | 顯示/設定 UTC 時間 |
格式化輸出參數完整表(+ 開頭)
| 參數 | 含義 | 範例 |
| %Y | 年份(4 位) | 2024 |
| %m | 月份(01-12) | 03 |
| %d | 日期(01-31) | 15 |
| %H | 小時(00-23) | 14 |
| %M | 分鐘(00-59) | 30 |
| %S | 秒(00-59) | 05 |
| %T | 時間 %H:%M:%S | 14:30:05 |
| %F | 日期 %Y-%m-%d | 2024-03-15 |
| %A | 完整星期名 | Friday |
| %a | 縮寫星期名 | Fri |
| %B | 完整月份名 | March |
| %b | 縮寫月份名 | Mar |
| %s | Unix 時間戳(自 1970 秒數) | 1710484205 |
| %Z | 時區名稱 | CST |
設定系統時間範例(需 root)
# 僅設定時間
date -s "14:30:00"
# 僅設定日期
date -s "2024-03-15"
# 同時設定日期時間
date -s "2024-03-15 14:30:00"
# 或
date -s "14:30:00 2024-03-15"
Shell 腳本常用取日期範例
# 今日日期作為檔名
today=$(date +%F) # 2024-03-15
backup_file="backup_$today.tar.gz"
# 完整時間戳
timestamp=$(date +%Y%m%d_%H%M%S) # 20240315_143005
# 計算昨天日期
yesterday=$(date -d "yesterday" +%F)
# 計算下個月第一天
next_month_first=$(date -d "$(date +%Y-%m-01) +1 month" +%F)
重要提醒
- 只有 **root** 可設定時間,一般使用者僅能顯示。
- 設定時間後建議執行
hwclock -w 同步至硬體時鐘(BIOS),否則重開機會恢復。
- 生產環境建議使用
ntpdate 或 chrony 自動對時,避免手動設定誤差。