Linux命令-date-显示或设定系统的日期与时间

1 起因及使用示例

启动服务时,报错:

io.minio.errors.ErrorResponseException: The difference between the request time and the server's time is too large.
        at io.minio.S3Base.execute(S3Base.java:637) ~[minio-8.3.9.jar:8.3.9]
        at io.minio.S3Base.getRegion(S3Base.java:661) ~[minio-8.3.9.jar:8.3.9]
        at io.minio.S3Base.execute(S3Base.java:445) ~[minio-8.3.9.jar:8.3.9]
        at io.minio.S3Base.executeHead(S3Base.java:695) ~[minio-8.3.9.jar:8.3.9]

错误信息直译为请求时间和服务器时间之间的差异太大,那服务器时间很有可能就有问题了,通过命令date看了下服务器时间,果然差了好多,便重置了一下时间,具体操作如下:

[root@localhost /]# date
2022年 05月 05日 星期四 16:32:38 CST
[root@localhost /]#
[root@localhost /]#
[root@localhost /]# date -s "2022-5-5 16:56:00"
2022年 05月 05日 星期四 16:56:00 CST
[root@localhost /]#
[root@localhost /]#
[root@localhost /]# date
2022年 05月 05日 星期四 16:56:04 CST
[root@localhost /]#

2 date命令详解

(参考:https://www.runoob.com/linux/linux-comm-date.html)

Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记。

其中可用的标记列表如下:

2.1 标记列表

时间方面:

标记说明
%印出 %
%n下一行
%t跳格
%H小时(00…23)
%I小时(01…12)
%k小时(0…23)
%l小时(1…12)
%M分钟(00…59)
%p显示本地 AM 或 PM
%r直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S秒(00…61)
%T直接显示时间 (24 小时制)
%X相当于 %H:%M:%S
%Z显示时区

日期方面:

标记说明
%a星期几 (Sun…Sat)
%A星期几 (Sunday…Saturday)
%b月份 (Jan…Dec)
%B月份 (January…December)
%c直接显示日期与时间
%d日 (01…31)
%D直接显示日期 (mm/dd/yy)
%h同 %b
%j一年中的第几天 (001…366)
%m月份 (01…12)
%U :一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)
%w :一周中的第几天 (0…6)
%W一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)
%x直接显示日期 (mm/dd/yy)
%y年份的最后两位数字 (00.99)
%Y完整年份 (0000…9999)

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

使用权限:所有使用者。

当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

2.2 语法

date [-u] [-d datestr] [-s datestr] [–utc] [–universal] [–date=datestr] [–set=datestr] [–help] [–version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

参数说明:

参数说明
-d datestr显示 datestr 中所设定的时间 (非系统时间)
–help显示辅助讯息
-s datestr将系统时间设为 datestr 中所设定的时间
-u显示目前的格林威治时间
–version显示版本编号

2.3 实例

显示当前时间

# date512 14:08:12 CST 2010
# date '+%c' 
2010年05月12日 星期三 14时09分02秒
# date '+%D' //显示完整的时间
05/12/10
# date '+%x' //显示数字日期,年份两位数表示
2010年05月12日
# date '+%T' //显示日期,年份用四位数表示
14:09:31
# date '+%X' //显示24小时的格式
14时09分39秒

按自己的格式输出

# date '+usr_time: $1:%M %P -hey'
usr_time: $1:16 下午 -hey

显示时间后跳行,再显示目前日期

date '+%T%n%D'

显示月份与日数

date '+%B %d'

显示日期与设定时间(12:34:56)

date --date '12:34:56'

设置时间

date -s "2022-5-5 16:56:00"
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐