Linux:时间指令 - cal & date

Linux:时间指令 - cal & date


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选项,输出目前一整年的日历:

在这里插入图片描述