查看原文
其他

玩转 Linux 环境下日期的语法

JackTian 杰哥的IT之旅 2022-06-07

点击上方“杰哥的IT之旅”,选择“置顶公众号”

干货、福利第一时间送达!



第⑦期 | 20本技术书籍,包邮送!


当你刚开始学习 Linux 时,可能查个时间也就执行个 date 命令来查看,但 date 出来的时间日期格式以及内容可能不是我们想要的,那么我们就需要对他进一步的输出,从而来达到我们想要的格式。今天来带大家玩转 Linux 环境下日期的基本语法,不妨你可以上机操作,效果会更好。下面终端框查询每条的语法稍有不同,可进行左右滑动进行查看哦~


常用的时间/日期域




date命令使用时,不带任何参数即可获取当前系统时间日期。一般是CST标准格式的时间。


[root@localhost ~]# date
2019年 04月 08日 星期一 09:
43:37CST


除了上述不加任何参数外,还可以通过date +%r的方式来获取当前时间;


[root@localhost ~]# date +%r
下午 01时22分06秒


获取特定格式,命令为:date + '格式',需要注意的是:时间域的大小写。


[root@localhost ~]# date +‘%Y-%m-%d’         #以中文的引号进行输出
‘2019-04-08’
[root@localhost ~]# date +%Y-%m-%d           #不带引号的输出格式
2019-04-08
[root@localhost ~]# date +'%Y-%m-%d'          #以英文的引号进行输出
2019-04-08
[root@localhost ~]# date +'%Y/%m/%d %H:%M:%S'    #特定格式,进行显示年月日,时分秒
2019/04/08 09:47:44


获取昨天、前天以及前几天的日期(年月日、时分秒),可加上 -d 的参数。


[root@localhost ~]# date -d 'yesterday'
2019年 04月 07日 星期日 09:48:41 CST
[root@localhost ~]# date -d last-day +%Y%m%d
20190407
[root@localhost ~]# date -d 'yesterday' +'%Y/%m/%d %H:%M:%S'
2019/04/07 10:02:26
[root@localhost ~]# date -d last-day +'%Y%m%d %H:%M:%S'
20190407 10:43:04
[root@localhost ~]# date -d 'today -1 day' +'%Y-%m-%d'
2019-04-07
[root@localhost ~]# date -d 'yesterday -1 day' +'%Y-%m-%d'
2019-04-06
[root@localhost ~]# date -d 'yesterday -1 day' +'%Y-%m-%d %H:%M:%S' #当前日期前两天的时间点
2019-04-06 11:09:35
[root@localhost ~]# date -d "6 days ago" +'%Y-%m-%d %H:%M:%S'    #当前日期前6天的时间点
2019-04-02 11:13:23


获取明天、后天以及当前日期后几天的时间点查找语法;


[root@localhost ~]# date -d 'tomorrow'
2019年 04月 09日 星期二 10:51:21 CST
[root@localhost ~]# date -d tomorrow +%Y%m%d
20190409
[root@localhost ~]# date -d 'tomorrow' +'%Y%m%d %H:%M:%S'
20190409 10:53:56
[root@localhost ~]# date -d tomorrow +'%Y%m%d %H:%M:%S'
20190409 10:54:57
[root@localhost ~]# date -d tomorrow +'%Y-%m-%d %H:%M:%S'
2019-04-09 10:56:09
[root@localhost ~]# date -d tomorrow +'%Y-%m-%d'
2019-04-09
[root@localhost ~]# date -d next-day +%Y%m%d
20190409
[root@localhost ~]# date -d next-day +'%Y-%m-%d'
2019-04-09
[root@localhost ~]# date -d 'next-day' +'%Y%m%d %H:%M:%S'
20190409 10:54:06
[root@localhost ~]# date -d next-day +'%Y%m%d %H:%M:%S'
20190409 10:55:12
[root@localhost ~]# date -d next-day +'%Y-%m-%d %H:%M:%S'
2019-04-09 10:55:59
[root@localhost ~]# date -d 'tomorrow -l' +'%Y-%m-%d' #当前日期后天的年月日
2019-04-10
[root@localhost ~]# date -d 'tomorrow -l day' +'%Y-%m-%d' #当前日期后天的年月日
2019-04-11
[root@localhost ~]# date -d "-6 days ago" +'%Y-%m-%d %H:%M:%S' #当前日期后6天的时间点
2019-04-14 11:14:51


获取当前时间的前一个小时的语法;


[root@localhost ~]# date -d 'today -1 hour' +'%Y%m%d%H'
2019040810

[root@localhost ~]# date +'%Y-%m-%d %H:
%M:%S' -d '-1 hours'
2019-04-08 10:22:01


获取指定日期前一天和后一天的日期语法;


[root@localhost ~]# date -d '20190101 -1 day' +'%Y%m%d'
20181231

[root@localhost ~]# date -d '20190101 yesterday' +'%Y%m%d'

20181231

[root@localhost ~]# date -d '20190101 yesterday -5 day' +'%Y%m%d'

20181226

[root@localhost ~]# date -d '20190101 yesterday' +'%Y%m%d %H:
%M:%S'
20181231 00:00:00
[root@localhost ~]# date -d '20190101 yesterday -5 day' +'%Y%m%d %H:%M:%S'
20181226 00:00:00
[root@localhost ~]# date -d '20190101 1 day' +'%Y%m%d'
20190102
[root@localhost ~]# date -d '20190101 -l day' +'%Y%m%d'
20190102
[root@localhost ~]# date -d '20190101 tomorrow' +'%Y%m%d'
20190102
[root@localhost ~]# date -d '20190101 tomorrow 6 day' +'%Y%m%d'
20190108
[root@localhost ~]# date -d '20190101 tomorrow' +'%Y%m%d %H:%M:%S'
20190102 00:00:00
[root@localhost ~]# date -d '20190101 tomorrow 6 day' +'%Y%m%d %H:%M:%S'
20190108 00:00:00


获取一周前的日期及时间点语法;


[root@localhost ~]# date -d "1 week ago" +%Y%m%d
20190401
[root@localhost ~]# date -d "1 week ago" +'%Y%m%d %H:%M:%S'
20190401 12:56:04


获取上月和下月的年份及月份;


[root@localhost ~]# date -d last-month +%Y%m
201903

[root@localhost ~]# date -d next-month +%Y%m

201905


获取上一年的年份及下一年的年份;


[root@localhost ~]# date -d last-year +%Y
2018

[root@localhost ~]# date -d next-year +%Y

2020


获取一年前的日期及时间点语法;


[root@localhost ~]# date -d "1 year ago" +%Y%m%d
20180408
[root@localhost ~]# date -d "1 year ago" +'%Y%m%d %H:%M:%S'
20180408 12:58:10


获取当前日期是这一年中的第几天;


[root@localhost ~]# date "+%j"
098


获取当前的月份/日份/年份;


[root@localhost ~]# date +%D
04/08/19


获取整年每月的日历,可执行命令:cal -y 来查看;



获取当前本月以及前后两个月的月历,可执行命令:cal -3来查看;如不加任何参数,则显示当前月份的月历;



将日期转换为时间戳


[root@localhost ~]# date -d "Mar 6 23:59:59CST 2019" +%s
1551887999


将时间戳转换为日期


[root@localhost ~]# date -d @1551887999
2019年 03月 06日 星期三 23:
59:59CST


将时间戳转换为日期,并按特定格式进行输出。


[root@localhost ~]# date -d @1551887999 +'%Y%m%d %H:%M:%S'
20190306 23:59:59


推荐阅读:

1、99%的Linux运维工程师必须要掌握的命令及运用

2、Linux环境下vi/vim编辑器常用命令

3、Linux 系统结构详解

4、Linux环境下账号和权限管理

5、Linux磁盘和文件系统管理

6、Linux环境下进程和计划任务管理

7、Linux环境下分析和排查系统故障

8、Linux运维常见故障排查和处理的技巧汇总


资源分享:

T级技术资源大放送!包括但不限于:Linux、Python、Java、前端、测试、大数据、人工智能等,具体获取方式请点击下方链接进行查看~资料大放送①期 | 这份资料很特别!


Ps:更多 Linux 相关文章可点击底部左下角的「 阅读原文 」进行查看哦~


扫它,加入交流群~


扫码关注,干货福利不错过~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存