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。