当然可以,下面是 date 命令的最全详解(Linux 日期与时间管理命令),包含格式化输出、时间修改、时区操作、时间戳转换等内容。


🕒 Linux date 命令详解(转)


一、命令简介

date 是 Linux 中用于 显示或设置系统日期与时间 的命令。
它是系统时间管理中最常用的工具之一,可以输出当前时间、修改时间格式、转换时间戳,甚至校正系统时钟。


二、命令语法

date [OPTION] [+FORMAT]

或修改系统时间的用法:

date [MMDDhhmm[[CC]YY][.ss]]


三、常用功能与选项

选项功能说明
date显示当前系统时间
date '+FORMAT'按指定格式输出日期时间
date -s STRING设置系统日期和时间
date -d STRING显示指定时间(模拟)
date -u显示 UTC(世界标准时间)
date +%s显示时间戳(1970-01-01 至今的秒数)
date -r FILE显示文件最后修改时间
date --date='...'-d 相同,指定计算时间偏移
date --set='...'-s,设置系统时间
date --utc使用 UTC 时间显示

四、时间格式化参数(+FORMAT

date 的强大之处在于它的格式化能力。

格式符含义示例
%Y年(4 位)2025
%y年(2 位)25
%m月(两位)10
%d日(两位)14
%H小时(00–23)09
%I小时(01–12)09
%M分钟30
%S59
%a星期(简写)Tue
%A星期(全写)Tuesday
%b月份(简写)Oct
%B月份(全写)October
%c本地日期与时间Tue Oct 14 09:30:00 2025
%j一年中的第几天287
%u一周中的第几天(1=周一)2
%w一周中的第几天(0=周日)2
%Z时区缩写CST
%z时区偏移+0800
%s时间戳1739500000

组合使用即可灵活输出各种格式。


五、常用实例

1️⃣ 显示当前时间

date
# 输出:Tue Oct 14 09:30:12 CST 2025


2️⃣ 格式化输出时间

date "+%Y-%m-%d %H:%M:%S"
# 输出:2025-10-14 09:30:12

或:

date "+%A, %B %d, %Y"
# 输出:Tuesday, October 14, 2025


3️⃣ 获取时间戳

date +%s
# 输出:1739473800


4️⃣ 将时间戳转为日期

date -d @1739473800 "+%Y-%m-%d %H:%M:%S"
# 输出:2025-10-14 09:30:00


5️⃣ 显示昨天、明天的时间

date -d "yesterday"
date -d "tomorrow"

或指定偏移量:

date -d "-1 day"
date -d "+2 weeks"
date -d "next monday"


6️⃣ 设置系统时间(需要 root 权限)

sudo date -s "2025-10-14 09:35:00"


7️⃣ 输出 UTC 时间

date -u
# 输出:Tue Oct 14 01:35:00 UTC 2025


8️⃣ 显示文件的修改时间

date -r /etc/passwd
# 输出:Tue Oct 14 09:15:00 CST 2025


9️⃣ 获取一年中的第几天

date +%j
# 输出:287


🔟 输出 ISO 8601 标准时间

date --iso-8601=seconds
# 输出:2025-10-14T09:35:00+08:00


六、配合 Shell 的实用技巧

1️⃣ 日志命名

tar czf backup-$(date +%Y%m%d).tar.gz /data
# 生成 backup-20251014.tar.gz

2️⃣ 定时任务脚本里记录日志时间

echo "Job started at $(date '+%Y-%m-%d %H:%M:%S')" >> /var/log/job.log

3️⃣ 时间计算

date -d "1 hour ago"
date -d "next Friday"

4️⃣ 格式化为毫秒时间戳

date +%s%3N
# 输出:1739473800123


七、修改系统时间与硬件时间

修改系统时间

sudo date -s "2025-10-14 10:00:00"

同步硬件时钟

sudo hwclock -w

查看硬件时钟

sudo hwclock -r


八、时区操作

查看当前时区

timedatectl

切换时区

sudo timedatectl set-timezone Asia/Shanghai

查看所有可用时区

timedatectl list-timezones


九、总结

功能命令示例
当前时间date
格式化时间date "+%Y-%m-%d %H:%M:%S"
时间戳date +%s
时间戳转日期date -d @时间戳
昨天 / 明天date -d "yesterday" / date -d "tomorrow"
UTC 时间date -u
修改时间sudo date -s "2025-10-14 10:00:00"
查看时区timedatectl
设置时区timedatectl set-timezone Asia/Shanghai

下面是 Linux date 命令的最详细用法讲解(转自多篇官方与社区资料整合版),适合初学者与运维开发人员深入理解。


🕒 一、date 命令简介

date 是 Linux 系统中用于显示或设置系统日期与时间的命令。
它既能以各种格式输出当前时间,也能进行日期计算(如前一天、后一小时等)。

命令格式如下:

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal]
date [MMDDhhmm[[CC]YY][.ss]]


🧭 二、显示当前时间

最简单的用法:

date

输出示例:

Tue Oct 14 08:15:27 CST 2025


🧩 三、常用时间格式控制(+FORMAT

使用 + 开头的参数可自定义输出格式。

🔹 常见格式符

格式符含义示例
%Y年(四位)2025
%y年(两位)25
%m月(01-12)10
%d日(01-31)14
%H小时(00-23)08
%I小时(01-12)08
%M分钟(00-59)30
%S秒(00-59)45
%a星期缩写(Sun…Sat)Tue
%A星期全称Tuesday
%Z时区CST
%s时间戳(自1970-01-01起的秒数)1760301327

🧮 四、格式化输出示例

# 输出标准日期
date "+%Y-%m-%d"

# 输出完整时间
date "+%Y-%m-%d %H:%M:%S"

# 输出时间戳
date +%s

# 将时间戳转成人类可读时间
date -d @1760301327


🕰️ 五、日期计算

-d 参数可以对日期进行加减计算,非常实用。

# 昨天
date -d "yesterday"

# 明天
date -d "tomorrow"

# 7天前
date -d "-7 day"

# 3个月后
date -d "+3 month"

# 显示下周一
date -d "next Monday"

# 自定义输出格式
date -d "2025-10-14 +5 day" "+%Y-%m-%d"


🧷 六、设置系统时间(root权限)

sudo date -s "2025-10-14 08:30:00"

⚠️ 注意:修改系统时间需管理员权限,容器或虚拟机中可能被禁止。

同步硬件时间:

sudo hwclock --systohc


🌎 七、UTC 与本地时区

# 使用UTC时间输出
date -u

# 查看当前时区
timedatectl


🔄 八、与脚本结合的实用技巧

1️⃣ 日志命名

tar -czf backup_$(date +%Y%m%d_%H%M%S).tar.gz /data

2️⃣ 定时任务日志

echo "$(date '+%F %T') backup complete" >> /var/log/backup.log

3️⃣ 时间差计算

start=$(date +%s)
# ...执行任务...
end=$(date +%s)
echo "Time elapsed: $((end - start)) seconds"


🧠 九、进阶时间格式例子

说明命令输出示例
ISO 8601 标准格式date --iso-8601=seconds2025-10-14T08:30:00+08:00
RFC 2822 邮件格式date --rfc-emailTue, 14 Oct 2025 08:30:00 +0800
Unix时间戳转为时间date -d @1600000000Sun Sep 13 12:26:40 CST 2020
本地化时间显示LC_TIME=fr_FR.UTF-8 datemar. 14 oct. 2025 08:30:00 CST

🧰 十、总结

功能示例
查看当前时间date
自定义格式date "+%Y-%m-%d %H:%M:%S"
时间戳 ↔ 日期转换date +%s / date -d @<timestamp>
日期加减计算date -d "+3 days"
设置系统时间sudo date -s "2025-10-14 08:30:00"
显示UTC时间date -u