# 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并修改默認端口