# date 命令
>[info]
**date命令**是显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。
延时通常用于脚本执行过程中提供一段等待的时间。
日期可以以多种格式去打印,也可以使用命令设置固定的格式。
在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
### 语法
>[info] `date (选项) (参数)`
### 选项
>[info] -s<字符串> 根据字符串来设置日期与时间。**字符串前后必须加上双引号**
### 参数
>[info] <+时间日期格式>:指定显示时使用的日期时间格式。
## 日期格式字符串列表
~~~
%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 日期和时间(Fri 25 Sep 2015 11:04:14 AM CST)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(2015则是15)
~~~
# 实例
### 格式化输出时间
~~~
date +"%Y-%m-%d"
# 2015-09-25
~~~
### 格式化昨天时间
~~~
date -d "1 day ago" +"%Y-%m-%d"
# 2015-09-24
# 或者如下命令
date +%Y-%m-%d --date="-1 day"
# 2015-09-24
~~~
### 输出两秒后的时间
~~~
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
~~~
### 将具体的时间戳转换成日期
~~~
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
# 2009-02-13 23:02:30
~~~
### apache时间格式转换
~~~
date -d "Dec 9, 2015 12:00:37 AM" +"%Y-%m-%d %H:%M:%S"
# 2015-12-09 00:00:37
~~~
### 格式转换后加减时间
~~~
date -d "Dec 9, 2015 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M:%S"
# 2013-12-09 00:00:37
~~~
### 加减操作
~~~
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 -s "12/09/15" # 设置为12月09日15年的0点0时0分
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 "2015-09-25 13:39:21" //这样可以设置全部时间
date -s "20150925 13:39:21" //这样可以设置全部时间
~~~
## 修改系统时间为当前时间
~~~
date -s "2015/09/20 09:00"
hwclock
~~~
- Linux的安装
- Linux的软件安装管理
- Linux零碎的命令
- 了解ssh
- 系统调优及安全设置
- Linux系统中的硬链接和软连接
- Linux文件和目录的属性及权限
- 命令总结
- 文件目录管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件检测内核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作场景应用总结
- 自动删除n天前日志
- 删除一个目录下的所有文件但保留一个文件
- Linux软件安装
- php安装(apache版本)
- vsftpd安装
- git安装
- python安装
- LNMP安装
- LAMP安装I
- LAMP安装II
- svn安装
- svn在Linux下的命令操作
- svn钩子简介
- svn代码上传流程
- Crond介绍
- sersync应用指南
- 其他
- 小结一
- 系统调优重新整理tmp
- linux禁止root用户直接登录sshd并修改默认端口