优选主流主机商
任何主机均需规范使用

利用Linux date设置系统时间方法 纠正系统时间不匹配

有些服务器我们选择后发现网站的时间使用的系统时间和实际的时间不对,我们就需要调整服务器的时间。这里我们会用到Linux Date命令来设置,这里整理几个系统设置时间的办法。

一、Linux date 命令使用方法

不带任何选项使用时,date 命令显示当前系统日期和时间,包括星期几、月份、时间、时区和年份:

date
Mon Nov 8 20:43:54 CST 2021
要在特定日期进行操作,可以提供带有 -d 标志的 date 命令:

date -d “1974-01-04″
Fri Jan 4 00:00:00 EST 1974
date 有许多显示格式选项。通过在日期前加上加号来为日期提供格式字符串:

date +”Week number: %V Year: %y”
Week number: 45 Year: 21
然后输出格式字符串,每个格式标记替换为其值。%V 是显示当前周数的格式选项,%y 代表年份的最后两位数字。

二、Linux date 命令具体语法介绍

以上是一个简单的例子,方便大家快速熟悉 date 命令,下面看一下 Linux date 命令具体语法。

语法

date[选项][参数]
选项

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。
参数

<+时间日期格式>:指定显示时使用的日期时间格式。
日期格式列表

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)

三、Linux date 命令更多使用示例

date 命令还提供一些方便的日期选项供使用,比如:

$ date -d now
Mon Nov 8 21:13:38 CST 2021

$ date -d today
Mon Nov 8 21:13:50 CST 2021

$ date -d yesterday
Sun Nov 7 21:14:03 CST 2021

$ date -d tomorrow
Tue Nov 9 21:14:14 CST 2021

$ date -d sunday
Sun Nov 14 00:00:00 CST 2021

$ date -d last-sunday
Sun Nov 7 00:00:00 CST 2021
此外还有: last-week,next-week,last-month,next-month,last-year 和 next-year。

格式化输出

$ date +"%Y-%m-%d"
2021-11-08
输出昨天日期

$ date -d "1 day ago" +"%Y-%m-%d"
2021-11-07
2 秒后输出

$ date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2021-11-08 21:16.46
1234567890 秒

$ date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
普通转格式

$ date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
Apache 格式转换

$ date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
格式转换后时间游走

$ date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
统计从 1970 年 1 月 1 日到现在的秒数

$ date +%s
1636377584
统计指定时间到现在的秒数

$ date -d "1974-01-04" +"%s"
126460800
查询特定日期是星期几

$ date -d "1974-01-04" +"%A"
Friday
加减操作

date +%Y%m%d //显示前天年月日
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期

四、使用 date 命令设置系统时间

设定时间

date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间

五、在 shell 和脚本里使用 date 命令

下面给几个例子自己体会一下。

1、在 shell 中配合其他命令使用

$ STARTTIME=`date`
$ echo $STARTTIME
Mon Nov 8 21:31:08 CST 2021
$ sleep 5
$ echo $STARTTIME
Mon Nov 8 21:31:08 CST 2021

2、创建带有时间戳的文件

tar cfz /backup-`date +%F`.tar.gz /home/ubuntu/

3、在脚本中使用 date 命令

#!/bin/bash

start=$(date +%s)
nmap example.com &> /dev/null

end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.

以上就是比较完整的 Linux date 命令使用教程。

未经允许不得转载:搬瓦工中文网 » 利用Linux date设置系统时间方法 纠正系统时间不匹配