### date命令
date命令是顯示或設置系統時間與日期。
很多shell腳本里面需要打印不同格式的時間或日期,以及要根據時間和日期執行操作。延時通常用于腳本執行過程中提供一段等待的時間。日期可以以多種格式去打印,也可以使用命令設置固定的格式。在類UNIX系統中,日期被存儲為一個整數,其大小為自世界標準時間(UTC)1970年1月1日0時0分0秒起流逝的秒數。
#### 語法
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)
#### 實例
格式化輸出:
~~~
date +"%Y-%m-%d"
2009-12-07
~~~
輸出昨天日期:
~~~
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
~~~
2秒后輸出:
~~~
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
~~~
傳說中的 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
~~~
加減操作:
~~~
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 //設置當前時間,只有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" //這樣可以設置全部時間
~~~
有時需要檢查一組命令花費的時間,舉例:
~~~
#!/bin/bash
start=$(date +%s)
nmap man.linuxde.net &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
~~~
- 目錄
- Linux目錄結構
- 文件和目錄管理
- 創建文件
- touch命令
- ln命令
- 文件列表
- 查看內容
- ls命令
- ll命令
- stat 命令
- 文件查找
- updatedb命令
- locate/slocate命令
- whereis命令
- which命令
- find命令
- 文件壓縮
- tar命令
- 目錄管理
- mkdir命令
- pwd命令
- tail命令
- 監視文件
- 文件復制
- cp命令
- 壓縮解壓
- zip命令
- unzip命令
- 系統管理
- crontab命令
- crontab問題
- crontab日志
- crontab原理
- 系統計劃任務
- 用戶計劃任務
- 調用ThinkPHP控制器
- ntsysv命令
- chkconfig命令
- export命令
- 修改PATH環境變量
- ps命令
- man
- 主要方法
- pstree命令
- service命令
- kill命令
- ulimit命令
- 綜合命令
- 編譯文件
- make命令
- makefile文件
- 設備管理
- mount命令
- 用戶和工作組管理
- groupadd命令
- passwd命令
- useadd命令
- groups命令
- chage命令
- whoami命令
- 查看用戶組下所有用戶
- 軟件安裝
- rpm命令
- 系統監測
- free命令
- 硬件配置
- 系統監控
- top命令
- ps_mem
- pstree
- 文件傳輸
- web服務
- Nginx
- 文件下載
- wget命令
- 系統幫助
- whatis命令
- man命令
- shell命令
- shell變量
- sh命令
- source命令
- test命令
- 表達式
- 邏輯運算符
- date命令
- declare命令
- 軟件安裝
- yum命令
- 安裝
- 系統服務
- systemctl命令
- service
- 環境變量
- Linux 中環境變量設置
- 網絡管理
- iptables命令
- netstat命令
- 查看端口占用
- 常用端口說明
- 系統安全
- getenforce
- 磁盤空間
- df命令