Linux shell 获取更改系统时间
date命令可以用来打印显示亦或者更改日期和时间。
看看官方的定义如下:
date - print or set the system date and time
用法如下:
1 | $ date [OPTION]... [+FORMAT] |
较常用的OPTION为:
-R
: 显示时区-u, --utc, --universal
:打印或者设置世界协调时-d, --date=STRING
:显示STRING的时间
默认输入
date 命令默认情况下为CST时区,
1 | $ date |
显示时区
如果加上 -R
参数就可以带上时区,比如我们的东八区
1 | $ date -R |
世界协调时
选项-u, --utc, --universal
可以显示世界协调时
1 | $ date -u |
格式化日期
可以通过不同的参数来格式化日期,这里需要注意的是:不同的大小写代表的是不同的含义
比较常用的日期和时间如下:
1 | # 显示年月日时分秒 |
这里注意到有+这个选项,后面的就是格式字符串,常见常用的有下面几个。
格式化参数 | 含义 |
---|---|
%a | 星期的缩写,比如Sun |
%A | 星期的全称,比如Sunday |
%b | 月份的缩写,比如Jan |
%B | 月份的全称,比如January |
%c | 日期和时间,比如Thu Mar 3 23:05:25 2005 |
%d | 日期,比如02 |
%D | 日期,格式为月/日/年,比如:01/17/13,即为2013年1月17日 |
%F | 日期的全写,格式为年-月-日,比如2013-01-17 |
%H | 小时,从00到23,24小时制 |
%I | 小时,从01到12,12小时制 |
%j | 一年中的第几天,从001到366 |
%m | 月份,比如:01 |
%M | 分钟,比如56 |
%N | 纳秒,范围为:(000000000..999999999) |
%p | 使用AM或PM |
%P | 使用am或pm |
%q | 显示季度(范围1到4) |
%r | 12进制显示,比如:10:23:51 PM |
%R | 24进制显示时分,类似于%H:%M |
%s | 自UTC1970-01-01 00:00:00以来的秒数 |
%S | 秒,比如28 |
%T | 显示时间,格式为:%H:%M:%S |
%u | 一周的第几天,从1到7 |
%U | 一年的第几周,周日为第一天,范围00到53 |
%V | 与%U类似,使用Monday作为第一天,范围01到53 |
%w | 星期,如果结果显示0,则表示周日 |
%W | 一年的第几周,周一为第一天,范围00到53 |
%x | 本地日期,格式mm/dd/yy |
%X | 本地时间,格式hh:mm:ss |
%Y | 以四位数字格式打印年份 ,比如 2014 |
%y | 以二位数字格式打印年份 ,比如14 |
%z | 数字时区,格式为+hhmm |
%Z | 字母时区,比如EDT、CST |
还有一些可选的参数,比如:^,使用方法为date +%^b
,此时的输出改为大写,如果date +%b
输出为Jan,那么加上^的输出为JAN。
转换秒到日期时间
下面的方法为将UTC 1970-01-01 00:00:00经过123456789秒以后的日期时间显示出来。
1 | $ date --date='@123456789' |
–date选项花样多
-d, --date=STRING
能描述和使用的STRING很多很复杂,比如可以这么用:
1 | $ date --date="next Week" |
还有很多其他的用法,可以参考info date
。