Linux:时间指令 - cal & date
- date指令
- cal指令
 
date指令
date用于以指定格式显示时间
我们先看看直接输入date指令的效果:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date
Tue Mar 12 21:38:01 CST 2024
直接输入date指令,得到了以 星期 月 日 时:分:秒 时区 年为格式的时间。
但是date指令可以按照自己制定的格式来输出时间
使用者可以设定格式,语法为一个 + 后接数个标记
常用标记如下:
| 标记 | 含义 | 
|---|---|
| %H | 小时 | 
| %M | 分钟 | 
| %s | 秒 | 
| %X | 相当于 %H:%M:%S | 
| %d | 日 | 
| %m | 月 | 
| %Y | 年 | 
| %F | 相当于 %Y-%m-%d | 
示例:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date +%F_%X
2024-03-12_09:50:15 PM
以上示例中,+%F_%X这个整体就用于格式化输出,其以一个+开头。对照上方的标记表格,其实%F就对应了2024-03-12,%X就对应了09:50:15 PM,而他们的分隔符也是可以有我们自己穿插的:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date +%Y:%m-%d_%H
2024:03-12_21
这样每个标记都显示了自己代表的时间,而每个时间之间的符号完全由我们自己决定。
date指令还可以用于输出时间戳,先简单讲解一下时间戳的概念:
时间戳是从格林威治时间1970年01月01日00时00分00秒开始至今所经过的秒数
通过
+%s来获取时间戳:
示例:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date +%s
1710251847
其中1710251847就是当前的时间戳。
通过
-d @1710252008,把时间戳转化为时间:
示例:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date -d @1710252008
Tue Mar 12 22:00:08 CST 2024
可以看到,1710252008时间戳代表的就是2024年3月12日22:00:08,我们也可以按照制定格式输出刚刚的时间戳:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date +%X_%F -d @1710252008
10:00:08 PM_2024-03-12
现在我们再看一看0时间戳的时间:
[hxy@iZ2zehtehrgzt3wqccrpyfZ CSDN]$ date -d @0
Thu Jan  1 08:00:00 CST 1970
可以看到,0时间戳确实是1970年1月1日,但是为什么是在早上8:00?
这是因为我们的Linux服务器在中国,中国在东八区,所以格林威治时间00时00:00时,东八区的时间就是8:00。
cal指令
cal指令可以用来显示公历日历
我们直接使用cal试试看:
 
 可以看到,其输出了当前月份的日历,并且高亮标出了当前是几号。
接下来我们再看几个常用选项:
- -3选项可以同时输出当前月份的前后一个月:

- -j选项,将数字从输出当月的第几号,改为输出当年的第几号:
 
- -y选项,输出目前一整年的日历:
