Linux基本命令篇 —— data命令
Linux系统提供了功能强大的date命令,用于显示和设置系统时间。该命令支持多种时间格式输出(如%Y-%m-%d %H:%M:%S)、时间计算(加减天数/小时)、时区切换和时间戳转换。管理员可通过date -s设置系统时间,普通用户可获取当前时间或格式化输出。常用场景包括生成带日期文件名、计算命令耗时等。使用时需注意权限问题(需root权限修改时间)和时区设置。date命令灵活的时间处理能力使其
在Linux系统中,
date是一个用于显示或设置系统日期和时间的基本命令。它功能强大且灵活,支持多种格式化和计算操作。通过灵活组合这些选项,date命令可以满足日志记录、定时任务、备份等场景的需求。以下是date命令的详细解析:
目录
3、Unix时间戳(英文为Unix epoch,Unix time,POSIX time或Unix timestamp)是从1970年1月1 日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒 。
一、基本用法
显示当前日期和时间
date
输出示例:(格式为:星期 月 日 时:分:秒 时区 年)

二、格式化输出
通过 + 指定格式字符串,自定义输出格式(重点)
常用格式符
| 符号 | 说明 | 示例(输出) |
|---|---|---|
%Y |
4位年份 | 2023 |
%m |
月份(01-12) | 06 |
%d |
日(01-31) | 28 |
%H |
24小时制小时 | 15 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-59) | 45 |
%A |
完整星期名 | Monday |
%B |
完整月份名 | June |
%F |
日期(等价于 %Y-%m-%d) |
2023-06-28 |
%T |
时间(等价于 %H:%M:%S) |
15:30:45 |
示例
date "+%Y-%m-%d %H:%M:%S"
输出:

date "+Today is %A, %B %d"
输出:

三、基本选项
1、-d, --date=STRING
解释:解析指定的时间字符串(而不是当前时间),并按照给定格式输出。
示例:
date -d "2024-01-01" # 显示指定日期的默认格式
date -d "next Friday" # 显示下周五的日期
date -d "2 days ago" "+%F" # 显示两天前的日期(YYYY-MM-DD)

2、-s, --set=STRING
解释:设置系统时间(需 root 权限)。
示例:
sudo date -s "2025-06-28 12:13:00" # 设置日期和时间
sudo date -s "18:14:00" # 仅设置时间(日期不变)

3、-u, --utc, --universal
解释:显示或设置 UTC(协调世界时)时间,而非本地时间。(中国时间:UTC+8小时)
示例:
date -u # 显示当前 UTC 时间
date -u "+%Y-%m-%d %H:%M:%S" # 格式化 UTC 时间

4、-r, --reference=FILE
解释:显示指定文件的最后修改时间。
示例:
date -r filename.txt # 显示 /etc/passwd 的最后修改时间
date -r filename.txt "+%F %T" # 格式化输出

四、设置系统时间
sudo date -s "2023-06-28 15:30:00"

或(由于上面输入过密码了,所以这次不用输入密码)
sudo date 062815302023.00 # 格式:MMDDhhmmYYYY.ss

1)date -s 设置当前时间,只有root用户才能设置,普通用户只能查看。
2)date -s 20250628 将时间设置为20250628,这样会将具体时间设置为空(00:00:00)。
3)date -s 01:01:01 设置具体时间,不会对日期做更改。
4)date -s “01:01:01 2025-06-28” 同时设置日期和具体时间。
5)date -s “01:01:01 20250628” 同时设置日期和具体时间。
6)date -s “2025-06-28 01:01:01” 同时设置日期和具体时间。
7)date -s “2025062801:01:01” 同时设置日期和具体时间。
五、时间计算
相对时间加减
date -d "now + 1 day" # 明天此时
date -d "next Monday" # 下周一
date -d "2 hours ago" # 2小时前
date -d "30 seconds" # 30秒后的时间

示例
date -d "yesterday" "+%F"
输出:

六、显示其他时区时间
TZ='America/New_York' date

或使用UTC时间:
date -u

七、时间戳转换
1、将日期转为时间戳(秒)
date -d "2023-06-28 15:30:00" +%s
输出:

2、将时间戳转为日期
date -d @1687937400 "+%F %T"
输出:

3、Unix时间戳(英文为Unix epoch,Unix time,POSIX time或Unix timestamp)是从1970年1月1 日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒 。
八、实用技巧
1、生成文件名带日期
tar -czf backup_$(date +%Y%m%d_%H%M).tar.gz /data
结果:将/data目录压缩打包成一个名为backup_年月日_时分.tar.gz的文件。
2、计算命令执行时间
start=$(date +%s)
# 执行某些命令...
end=$(date +%s)
echo "耗时:$((end - start))秒"

九、常见问题
-
权限不足:修改时间需使用
sudo。 -
时区问题:若时间不对,检查时区设置(
timedatectl或tzselect)。
-
格式无效:确保格式符大小写正确(如
%M分钟,%m月份)。
更多推荐

所有评论(0)