date 命令详解
文章目录
- date 命令详解
- 1. 简介
- 2. 常用日期格式
- 3. 参数用法
- 3.1 `-d, --date` 参数
- 3.2 `-f, --file` 参数
- 3.3 `-I, --iso-8601` 参数
- 3.4 `-r --reference` 参数
- 3.5 `-R, --rfc-822` 参数
- 3.6 `-s, --set` 参数
- 3.7 `-u, --utc` 参数
1. 简介
date 命令用于 显示 或 设置系统的时间或日期。
格式:date [参数] [+日期格式]
2. 常用日期格式
日期格式 | 解释 |
%t | 输出制表符,tab键 |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
%Y | 输出年份 |
%m | 输出月份 |
%d | 输出日期 |
例子:
按格式年-月-日 时:分:秒
输出当前日期:
date "+%Y-%m-%d %H:%M:%S"
3. 参数用法
3.1 -d, --date
参数
格式:
date -d '运算规则'
作用:指定时间运算规则,date会将当前时间做指定的运算,然后输出运算后的时间
例子:
# 输出3分钟前的时间 (3天day、月month、年year前同理)
date -d '3 minutes ago'
date -d '-3 minutes'
# 输出3分钟后的时间(3天、月、年前同理)
date -d '3 minutes'
# 此处时间的单复数都可以
date -d '-3 minutes' 和 date -d '-3 minute'效果一样
3.2 -f, --file
参数
格式:
date -f 文件路径
作用:可将-d参数指定的运算规则写入文件中,通过-f参数指定文件路径,date命令逐行读取该文件,并按照此文件指定的运算规则输出运算后的时间。
例子:
# datefile文件内容
1 years ago
-1 year
-3 month
-2 days
1 year
2 month
# 执行命令
date -f datefile
# 输出结果
2021年 09月 01日 星期三 00:13:23 CST
2021年 09月 01日 星期三 00:13:23 CST
2022年 06月 01日 星期三 00:13:23 CST
2022年 08月 30日 星期二 00:13:23 CST
2023年 09月 01日 星期五 00:13:23 CST
2022年 11月 01日 星期二 00:13:23 CST
3.3 -I, --iso-8601
参数
格式:
date -I 或者 date --iso-8601[=TIMESPACE]
作用:按照iso-8601的标准输出时间
$ date -I
2022-09-01
$ date --iso-8601
2022-09-01
# 可通过 --iso-8601= ns |date | hours | minutes | seconds 指定显示的精度
$ date --iso-8601=ns
2022-09-01T00:25:39,827090616+0800
# 00:25:39 为凌晨0点25分39秒
$ date --iso-8601=date # 默认即为date
2022-09-01
$ date --iso-8601=hours
2022-09-01T00+0800 # T00(时间显示到小时:当前为凌晨0点)+0800
$ date --iso-8601=minutes
2022-09-01T00:29+0800 # 显示到分钟
$ date --iso-8601=seconds
2022-09-01T00:29:31+0800 # 显示到秒
3.4 -r --reference
参数
格式:
date -r 文件路径
作用:显示指定文件最后被修改的时间。
$ date -r datefile
2022年 09月 01日 星期四 00:13:18 CST
$ date -r datefile "+%Y-%m-%d %H:%m:%S"
2022-09-01 00:09:24
注:cat查看文件不影响,vim进入文件即会修改时间
3.5 -R, --rfc-822
参数
格式:date -R 或 date --rfc-822
作用:根据 RFC-822 指定格式输出日期
例子
$ date -R
Thu, 01 Sep 2022 00:40:07 +0800
$ date --rfc-822
Thu, 01 Sep 2022 00:40:22 +0800
$ date --rfc-2822
Thu, 01 Sep 2022 00:40:22 +0800
$ date --rfc-3339=[TIMESPACE] # 用法和--iso-8601相同
3.6 -s, --set
参数
格式:date -s ‘字符串’
作用:根据-s指定的内容设定系统的时间。执行此命令需要提权
# 将系统时间改为1999年1月1日 上午8:30
$ date -s "19990101 8:30:00"
1999年 01月 01日 星期五 08:30:00 CST
$ date
1999年 01月 01日 星期五 08:30:25 CST
3.7 -u, --utc
参数
格式:
作用:显示或设置全球时间(格林威治时间)
例子
$ date -u
2022年 08月 31日 星期三 16:46:02 UTC
$ date --utc
2022年 08月 31日 星期三 16:46:45 UTC