1 date简介
在linux 中date命令有很多用法,本文简单介绍一下 -d 参数的用法。
date -d //显示字符串所指的日期与时间。字符串前后必须加上双引号。
例如:
date -d “-1day” //前一天
date -d “1day” //后一天
指定日期的显示格式:
date <+时间日期格式>
例如:
[root@yuji ~]# date +"%Y-%m-%d"
2022-05-01
[root@yuji ~]# date +"%Y%m%d"
20220501
日期格式:
| 格式 | 作用 |
|---|---|
| %Y | 完整年份 (0000~9999) |
| %y | 年份的最后两位数字 (00~99) |
| %m | 月份 (01~12) |
| %d | 日 (01~31) |
| %W | 一年中的第几周 (00~53) (以 Monday 作为一周的第一天) |
| %U | 一年中的第几周 (00~53) (以 Sunday 作为一周的第一天) |
| %w | 一周中的第几天 (0~6) |
| %D | 直接显示日期 (mm/dd/yy) |
| %x | 直接显示日期 (mm/dd/yy) |
| %B | 月份 (January~December) |
| %b | 月份 (Jan~Dec) |
| %A | 星期几 (Sunday~Saturday) |
| %a | 星期几 (Sun~Sat) |
| %F | 直接显示日期,相当于"%Y-%m-%d"(yyyy-mm-dd) |
时间格式:
| 格式 | 作用 |
|---|---|
| %H | 小时(00~23) |
| %M | 分钟(00~59) |
| %S | 秒(00~59) |
| %X | 相当于 %H:%M:%S |
| %T | 直接显示时间 (24 小时制) |
| %p | 显示本地 AM 或 PM |
| %Z | 显示时区 |
| %k | 小时(0~23) |
| %l | 小时(1~12) |
| %r | 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) |
| %s | 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 |
2 获得某一天的时间:
示例1:
[root@yuji ~]# date
2022年 05月 01日 星期日 22:51:46 CST
[root@yuji ~]# date +"%Y%m%d"
20220501
[root@yuji ~]# date -d "-1 day" +"%Y%m%d"
20220430
[root@yuji ~]# date -d "1 day" +"%Y%m%d"
20220502
示例2:
[root@yuji ~]# date
2022年 05月 01日 星期日 20:55:14 CST
[root@yuji ~]# date +"%Y%m%d" //当前日期
20220501
[root@yuji ~]# date +"%Y%m01" //本月第一天
20220501
#上个月最后一天(本月第一天减1天)
[root@yuji ~]# date -d "$(date +"%Y%m01") -1day" +"%Y%m%d"
20220430
#上个月倒数第3天(本月第一天减3天)
[root@yuji ~]# date -d "$(date +"%Y%m01") -3 day" +"%Y%m%d"
20220428
#下个月第一天
[root@yuji ~]# date -d "$(date -d "1 month" +"%Y%m01")"
2022年 06月 01日 星期三 00:00:00 CST
[root@yuji ~]# date -d "$(date -d "1 month" +"%Y%m01")" +"%Y%m%d"
20220601
#本月最后一天(下个月第一天减1天)
[root@yuji ~]# date -d "$(date -d "1 month" +"%Y%m01") -1 day" +"%Y%m%d"
20220531
3 获得多少秒之前的时间:
[root@yuji ~]# date -d "2 day ago" +"%Y%m%d" //获得2天前的时间
20220429
[root@yuji ~]# date -d "10 day ago" +"%Y%m%d" //获得10天前的时间
20220421
[root@yuji ~]# date -d "10 second ago" +"%Y%m%d" //获得10秒前的时间
20220501
[root@yuji ~]# date -d "10 second ago" +"%Y%m%d %H:%M:%S" //获得10秒前的时间,显示具体的时分秒
20220501 22:08:39
4 查看系统启动时间:
[root@yuji ~]# cat /proc/uptime
29602.31 29039.95
#第一列输出的是,系统启动到现在的时长(以秒为单位)
#第二列输出的是,系统空闲的时长(以秒为单位)
5 通过date命令计算出系统启动时间(本次系统开机时间):
[root@yuji ~]# cat /proc/uptime
31761.98 31117.16
[root@yuji ~]# awk -F. '{print $1}' /proc/uptime
31763
[root@yuji ~]# date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y%m%d %H:%M:%S"
20220501 13:59:21