Linux date 命令使用指南

发布于:2025-03-16 ⋅ 阅读:(22) ⋅ 点赞:(0)

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 参数灵活实现。