Linux--date命令 date命令
生活随笔
收集整理的這篇文章主要介紹了
Linux--date命令 date命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux--date命令 date命令?
date命令的功能是顯示和設置系統日期和時間。?
該命令的一般格式為: date [選項] 顯示時間格式(以+開頭,后面接格式)?
date 設置時間格式?
命令中各選項的含義分別為:?
-d datestr, --date datestr 顯示由datestr描述的日期?
-s datestr, --set datestr 設置datestr 描述的日期?
-u, --universal 顯示或設置通用時間?
時間域?
% H 小時(00..23)?
% I 小時(01..12)?
% k 小時(0..23)?
% l 小時(1..12)?
% M 分(00..59)?
% p 顯示出AM或PM?
% r 時間(hh:mm:ss AM或PM),12小時?
% s 從1970年1月1日00:00:00到目前經歷的秒數?
% S 秒(00..59)?
% T 時間(24小時制)(hh:mm:ss)?
% X 顯示時間的格式(%H:%M:%S)?
% Z 時區 日期域?
% a 星期幾的簡稱( Sun..Sat)?
% A 星期幾的全稱( Sunday..Saturday)?
% b 月的簡稱(Jan..Dec)?
% B 月的全稱(January..December)?
% c 日期和時間( Mon Nov 8 14:12:46 CST 1999)?
% d 一個月的第幾天(01..31)?
% D 日期(mm/dd/yy)?
% h 和%b選項相同?
% j 一年的第幾天(001..366)?
% m 月(01..12)?
% w 一個星期的第幾天(0代表星期天)?
% W 一年的第幾個星期(00..53,星期一為第一天)?
% x 顯示日期的格式(mm/dd/yy)?
% y 年的最后兩個數字( 1999則是99)?
% Y 年(例如:1970,1996等)?
需要特別說明的是,只有超級用戶才能用date命令設置時間,一般用戶只能用date命令顯示時間。?
例1:用指定的格式顯示時間。?
$ date ‘+This date now is =>%x ,time is now =>%X ,thank you !'?
This date now is =>11/12/99 ,time is now =>17:53:01 ,thank you !?
例2:用預定的格式顯示當前的時間。?
# date?
Fri Nov 26 15:20:18 CST 1999?
例3:設置時間為下午14點36分。?
# date -s 14:36:00?
Fri Nov 26 14:15:00 CST 1999?
例4:設置時間為1999年11月28號。?
# date -s 991128?
Sun Nov 28 00:00:00 CST 1999?
????? 例5:設置一天前
???? date --date "1 days ago" +"%Y-%m-%d" Date 命令參數小技巧
LastUpdated:2006-03-27
By:Gman! -for beginner:wink:此參數可以用于日志處理和時間統計; 由于Linux對man date -d 參數說的比較模糊,故舉例如下:
# -d, --date=STRING? display time described by STRING, not `now' For Linux
[root@Gman root]# date -d next-day +%Y%m%d
20060328
[root@Gman root]# date -d last-day +%Y%m%d
20060326
[root@Gman root]# date -d yesterday +%Y%m%d
20060326
[root@Gman root]# date -d tomorrow +%Y%m%d
20060328
[root@Gman root]# date -d last-month +%Y%m
200602
[root@Gman root]# date -d next-month +%Y%m
200604
[root@Gman root]# date -d next-year +%Y
2007
------------------------------------------------------------------------------
而FreeBSD則不同;舉例如下:
For FreeBSD
bash-2.05b# date -v -1d +%Y%m%d
20060326
bash-2.05b#? date -v -1m +%Y%m%d?
20060227
bash-2.05b#? date -v -1y +%Y%m%d?
20050327??
?
?
一些 man page 沒提到的 --date=STRING 使用方法
date -d "yesterday" # 顯示昨天的時間
date -d "tomorrow" # 顯示明天的時間
date -d "1 hour" # 顯示一小時後的時間
date -d "2 day ago" # 顯示二天前的時間
date -d "3 month ago" # 顯示三個月前的時間
date -d "2 year" # 顯示二年後的時間
date -d "last friday" # 顯示上個星期五的時間
date -d "next week" # 顯示下週的時間
date -d "next month" # 顯示下個月的時間
date -d "fortnight" # 顯示二週後的時間
date -d "7/1 3 week" # 顯示 7/1 起算的第三週
date -d now +%s #時間轉成時間戳
date -d '1970-01-01 1251734400 sec utc' +%Y/%m/%d// %T #時間戳轉成時間
本地時間與UTC(世界協調時間)的轉換??
?
首先我們了解一下時間的相關概念,以及之間的區別,需要了解的時間概念有:
本地時間(locale time)
格林威治時間(Greenwich Mean Time GMT)
時間協調時間 (Universal Time Coordinated UTC)
? 本地時間,顯而易見不用解釋了
? 先看看時間的標準:
(1)世界時?
世 界時是最早的時間標準。在1884年,國際上將1s確定為全年內每日平均長度的1/8.64×104。以此標準形成的時間系統,稱為世界是,即 UT1。1972年國際上開始使用國際原子時標,從那以后,經過格林威治老天文臺本初子午線的時間便被稱為世界時,即UT2,或稱格林威治時間 (GMT),是對地球轉速周期性差異進行校正后的世界時。
(2)原子時?
1967年,人們利用銫原子振蕩周期極為規律的特性,研制出 了高精度的原子時鐘,將銫原子能級躍遷輻射9192631770周所經歷的時間定為 1s?,F在用的時間就是1971年10月定義的國際原子時,是通過世界上大約200多臺原子鐘進行對比后,再由國際度量衡局時間所進行數據處理,得出的統 一的原子時,簡稱TAI。?
(3)世界協調時?
世界協調時是以地球自轉為基礎的時間標準。由于地球自轉速度并不均勻,并非每天都是精確 的86400原子s,因而導致了自轉時間與世界時之間存在 18個月有1s的誤差。為糾正這種誤差,國際地球自轉研究所根據地球自轉的實際情況對格林威治時間進行增減閏s的調整,與國際度量衡局時間所聯合向全世界 發布標準時間,這就是所謂的世界協調時(UTC:Coordinatde Universal Time)。UTC的表示方式為:年(y)、月(m)、日(d)、時(h)、分(min)、秒(s),均用數字表示。 GPS 系統中有兩種時間區分,一為UTC,另一為LT(地方時)兩者的區別為時區不同,UTC就是0時區的時間,地方時為本地時間,如北京為早上八點(東八區),UTC時間就為零點,時間比北京時晚八小時,以此計算即可
? 通過上面的了解,我們可以認為格林威治時間就是時間協調時間(GMT=UTC),格林威治時間和UTC時間均用秒數來計算的。 而在我們平時工作當中看到的計算機日志里面寫的時間大多數是用UTC時間來計算的,那么我們該怎么將UTC時間轉化為本地時間便于查看日志,那么在作程序開發時又該怎么將本地時間轉化為UTC時間呢?
?? 下面就介紹一個簡單而使用的工具,就是使用linux/unix命令date來進行本地時間和local時間的轉化。
?? 大家都知道,在計算機中看到的utc時間都是從(1970年01月01日 0:00:00)開始計算秒數的。所看到的UTC時間那就是從1970年這個時間點起到具體時間共有多少秒。
???
? 以我的FC9平臺為例:
??? 1.使用date命令獲得本地時間 Mon Jan? 5 21:06:48 CST 2009
?? 2.將本地易理解的時間轉化為UTC時間,使用date 命令,對該時間進行UTC格式化 date +%s -d "Mon Jan? 5 21:06:48 CST 2009"
返回的結果是:1231160808 #自1970年1月1日0:00:00起到今天晚上21:06:48共1231160808秒
? 1231160808這就是我們所說的UTC或者格林威治時間。 3.使用命令date將難以理解的UTC時間轉化成為容易理解的本地時間
在這里,我們隨便將上面這個格林威治時間修改一下來進行轉化即可,比如1231130828 date -d "1970-01-01 UTC 1231130828 sec" 返回結果是:Mon Jan? 5 12:47:08 CST 2009? #是今天中午12:47:08
? 4.使用date命令將本地時間進行格式化 date +%X -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果:12:47:08 PM date +%x +%X -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果是:01/05/2009 12:47:08 PM date +'%x %X %W' -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果:01/05/2009 12:47:08 PM 01?? #01是星期一,如果是%w,返回的是1 date +'%Y-%m-%d %H:%M:%S %W' -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果是:2009-01-05 12:47:08 01
對UTC時間的進行格式化: date +‘%x %X' -d "1970-01-01 UTC 1231130828 sec"
返回結果:01/05/2009 12:47:08 PM
date命令還有很多格式化的參數,功能很強大,大家可以使用"man date"或者"info date"來作參考。
date命令的功能是顯示和設置系統日期和時間。?
該命令的一般格式為: date [選項] 顯示時間格式(以+開頭,后面接格式)?
date 設置時間格式?
命令中各選項的含義分別為:?
-d datestr, --date datestr 顯示由datestr描述的日期?
-s datestr, --set datestr 設置datestr 描述的日期?
-u, --universal 顯示或設置通用時間?
時間域?
% H 小時(00..23)?
% I 小時(01..12)?
% k 小時(0..23)?
% l 小時(1..12)?
% M 分(00..59)?
% p 顯示出AM或PM?
% r 時間(hh:mm:ss AM或PM),12小時?
% s 從1970年1月1日00:00:00到目前經歷的秒數?
% S 秒(00..59)?
% T 時間(24小時制)(hh:mm:ss)?
% X 顯示時間的格式(%H:%M:%S)?
% Z 時區 日期域?
% a 星期幾的簡稱( Sun..Sat)?
% A 星期幾的全稱( Sunday..Saturday)?
% b 月的簡稱(Jan..Dec)?
% B 月的全稱(January..December)?
% c 日期和時間( Mon Nov 8 14:12:46 CST 1999)?
% d 一個月的第幾天(01..31)?
% D 日期(mm/dd/yy)?
% h 和%b選項相同?
% j 一年的第幾天(001..366)?
% m 月(01..12)?
% w 一個星期的第幾天(0代表星期天)?
% W 一年的第幾個星期(00..53,星期一為第一天)?
% x 顯示日期的格式(mm/dd/yy)?
% y 年的最后兩個數字( 1999則是99)?
% Y 年(例如:1970,1996等)?
需要特別說明的是,只有超級用戶才能用date命令設置時間,一般用戶只能用date命令顯示時間。?
例1:用指定的格式顯示時間。?
$ date ‘+This date now is =>%x ,time is now =>%X ,thank you !'?
This date now is =>11/12/99 ,time is now =>17:53:01 ,thank you !?
例2:用預定的格式顯示當前的時間。?
# date?
Fri Nov 26 15:20:18 CST 1999?
例3:設置時間為下午14點36分。?
# date -s 14:36:00?
Fri Nov 26 14:15:00 CST 1999?
例4:設置時間為1999年11月28號。?
# date -s 991128?
Sun Nov 28 00:00:00 CST 1999?
????? 例5:設置一天前
???? date --date "1 days ago" +"%Y-%m-%d" Date 命令參數小技巧
LastUpdated:2006-03-27
By:Gman! -for beginner:wink:此參數可以用于日志處理和時間統計; 由于Linux對man date -d 參數說的比較模糊,故舉例如下:
# -d, --date=STRING? display time described by STRING, not `now' For Linux
[root@Gman root]# date -d next-day +%Y%m%d
20060328
[root@Gman root]# date -d last-day +%Y%m%d
20060326
[root@Gman root]# date -d yesterday +%Y%m%d
20060326
[root@Gman root]# date -d tomorrow +%Y%m%d
20060328
[root@Gman root]# date -d last-month +%Y%m
200602
[root@Gman root]# date -d next-month +%Y%m
200604
[root@Gman root]# date -d next-year +%Y
2007
------------------------------------------------------------------------------
而FreeBSD則不同;舉例如下:
For FreeBSD
bash-2.05b# date -v -1d +%Y%m%d
20060326
bash-2.05b#? date -v -1m +%Y%m%d?
20060227
bash-2.05b#? date -v -1y +%Y%m%d?
20050327??
?
?
一些 man page 沒提到的 --date=STRING 使用方法
date -d "yesterday" # 顯示昨天的時間
date -d "tomorrow" # 顯示明天的時間
date -d "1 hour" # 顯示一小時後的時間
date -d "2 day ago" # 顯示二天前的時間
date -d "3 month ago" # 顯示三個月前的時間
date -d "2 year" # 顯示二年後的時間
date -d "last friday" # 顯示上個星期五的時間
date -d "next week" # 顯示下週的時間
date -d "next month" # 顯示下個月的時間
date -d "fortnight" # 顯示二週後的時間
date -d "7/1 3 week" # 顯示 7/1 起算的第三週
date -d now +%s #時間轉成時間戳
date -d '1970-01-01 1251734400 sec utc' +%Y/%m/%d// %T #時間戳轉成時間
本地時間與UTC(世界協調時間)的轉換??
?
首先我們了解一下時間的相關概念,以及之間的區別,需要了解的時間概念有:
本地時間(locale time)
格林威治時間(Greenwich Mean Time GMT)
時間協調時間 (Universal Time Coordinated UTC)
? 本地時間,顯而易見不用解釋了
? 先看看時間的標準:
(1)世界時?
世 界時是最早的時間標準。在1884年,國際上將1s確定為全年內每日平均長度的1/8.64×104。以此標準形成的時間系統,稱為世界是,即 UT1。1972年國際上開始使用國際原子時標,從那以后,經過格林威治老天文臺本初子午線的時間便被稱為世界時,即UT2,或稱格林威治時間 (GMT),是對地球轉速周期性差異進行校正后的世界時。
(2)原子時?
1967年,人們利用銫原子振蕩周期極為規律的特性,研制出 了高精度的原子時鐘,將銫原子能級躍遷輻射9192631770周所經歷的時間定為 1s?,F在用的時間就是1971年10月定義的國際原子時,是通過世界上大約200多臺原子鐘進行對比后,再由國際度量衡局時間所進行數據處理,得出的統 一的原子時,簡稱TAI。?
(3)世界協調時?
世界協調時是以地球自轉為基礎的時間標準。由于地球自轉速度并不均勻,并非每天都是精確 的86400原子s,因而導致了自轉時間與世界時之間存在 18個月有1s的誤差。為糾正這種誤差,國際地球自轉研究所根據地球自轉的實際情況對格林威治時間進行增減閏s的調整,與國際度量衡局時間所聯合向全世界 發布標準時間,這就是所謂的世界協調時(UTC:Coordinatde Universal Time)。UTC的表示方式為:年(y)、月(m)、日(d)、時(h)、分(min)、秒(s),均用數字表示。 GPS 系統中有兩種時間區分,一為UTC,另一為LT(地方時)兩者的區別為時區不同,UTC就是0時區的時間,地方時為本地時間,如北京為早上八點(東八區),UTC時間就為零點,時間比北京時晚八小時,以此計算即可
? 通過上面的了解,我們可以認為格林威治時間就是時間協調時間(GMT=UTC),格林威治時間和UTC時間均用秒數來計算的。 而在我們平時工作當中看到的計算機日志里面寫的時間大多數是用UTC時間來計算的,那么我們該怎么將UTC時間轉化為本地時間便于查看日志,那么在作程序開發時又該怎么將本地時間轉化為UTC時間呢?
?? 下面就介紹一個簡單而使用的工具,就是使用linux/unix命令date來進行本地時間和local時間的轉化。
?? 大家都知道,在計算機中看到的utc時間都是從(1970年01月01日 0:00:00)開始計算秒數的。所看到的UTC時間那就是從1970年這個時間點起到具體時間共有多少秒。
???
? 以我的FC9平臺為例:
??? 1.使用date命令獲得本地時間 Mon Jan? 5 21:06:48 CST 2009
?? 2.將本地易理解的時間轉化為UTC時間,使用date 命令,對該時間進行UTC格式化 date +%s -d "Mon Jan? 5 21:06:48 CST 2009"
返回的結果是:1231160808 #自1970年1月1日0:00:00起到今天晚上21:06:48共1231160808秒
? 1231160808這就是我們所說的UTC或者格林威治時間。 3.使用命令date將難以理解的UTC時間轉化成為容易理解的本地時間
在這里,我們隨便將上面這個格林威治時間修改一下來進行轉化即可,比如1231130828 date -d "1970-01-01 UTC 1231130828 sec" 返回結果是:Mon Jan? 5 12:47:08 CST 2009? #是今天中午12:47:08
? 4.使用date命令將本地時間進行格式化 date +%X -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果:12:47:08 PM date +%x +%X -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果是:01/05/2009 12:47:08 PM date +'%x %X %W' -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果:01/05/2009 12:47:08 PM 01?? #01是星期一,如果是%w,返回的是1 date +'%Y-%m-%d %H:%M:%S %W' -d "Mon Jan? 5 12:47:08 CST 2009"
返回結果是:2009-01-05 12:47:08 01
對UTC時間的進行格式化: date +‘%x %X' -d "1970-01-01 UTC 1231130828 sec"
返回結果:01/05/2009 12:47:08 PM
date命令還有很多格式化的參數,功能很強大,大家可以使用"man date"或者"info date"來作參考。
總結
以上是生活随笔為你收集整理的Linux--date命令 date命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell脚本 -d 是目录文件,那么-
- 下一篇: 怎么查看linux文件夹下有多少个文件