date
命令用于 顯示或設置系統日期和時間,支持靈活的時間格式化和計算。以下是常用場景與詳細示例:
一、基本用法
1.?顯示當前日期和時間
<BASH>
date
# 輸出:Thu Jun 13 14:25:36 CST 2024
2.?設置系統時間(需root權限)
<BASH>
sudo date -s "2024-06-13 15:30:00"
# 設置時間為 2024年6月13日 15:30:00
二、格式化輸出
1.?自定義日期格式
使用 +
開頭指定格式符號:
<BASH>
date "+%Y-%m-%d %H:%M:%S"
# 輸出:2024-06-13 14:25:36
2.?常用格式符號
符號 | 含義 | 示例 |
---|---|---|
%Y | 年份(4位) | 2024 |
%m | 月份(01-12) | 06 |
%d | 日(01-31) | 13 |
%H | 小時(00-23) | 14 |
%M | 分鐘(00-59) | 25 |
%S | 秒(00-60) | 36 |
%A | 完整星期名稱 | Thursday |
%a | 縮寫星期名稱 | Thu |
%B | 完整月份名稱 | June |
%b | 縮寫月份名稱 | Jun |
3.?示例
<BASH>
date "+今天是 %Y 年 %m 月 %d 日,時間: %H 點 %M 分"
# 輸出:今天是 2024 年 06 月 13 日,時間: 14 點 25 分
三、時區管理
1.?查看當前時區
<BASH>
date +"%Z %z"
# 輸出:CST +0800 (表示東八區)
2.?臨時切換時區
通過環境變量 TZ
臨時修改時區:
<BASH>
TZ='America/New_York' date
# 輸出紐約時間(比 UTC 晚4或5小時,夏令時不同)
3.?永久修改時區
<BASH>
sudo timedatectl set-timezone Asia/Shanghai # systemd 系統推薦方式
# 或傳統方式(需創建軟鏈接)
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
四、時間計算與特定日期處理
1.?顯示過去/未來的時間
使用 -d
或 --date
參數:
<BASH>
date -d "tomorrow" # 明天此時
date -d "next week" # 下周此時
date -d "3 days ago" # 3天前
date -d "2023-12-31 +1 day" # 2024-01-01
2.?輸出Unix時間戳
<BASH>
date +%s # 當前時間戳(秒)
date -d "@1672502400" +"%F %T" # 時間戳轉日期:2023-01-01 00:00:00
五、實用場景
1.?生成備份文件名
<BASH>
backup_file="data-$(date +%Y%m%d-%H%M).tar.gz"
tar -czf $backup_file /path/to/data
2.?腳本中記錄日志時間
<BASH>
echo "[$(date +"%F %T")] 任務開始執行..." >> script.log
六、常見問題
1.?權限不足導致時間設置失敗
若提示 date: cannot set date: Operation not permitted
,需用 sudo
:
<BASH>
sudo date -s "新的時間"
2.?時區同步異常
安裝并啟用 NTP 服務自動同步網絡時間:
<BASH>
sudo apt install ntp # Debian/Ubuntu
sudo systemctl enable ntpd # systemd 系統
總結:
date
?是系統管理員和開發者的核心工具,適用于?時間管理、日志記錄、任務調度。- 優先使用?
timedatectl
?管理時區(現代 Linux 系統)。 - 復雜時間計算可借助?
-d
?參數靈活實現。