linux在shell中获取系统时间,linux在shell中获取时间
獲得當天的日期
date?+%Y-%m-%d
輸出:?2011-07-28
將當前日期賦值給DATE變量
DATE=$(date?+%Y%m%d)
有時候我們需要使用今天之前或者往后的日期,這時可以使用date的?-d參數
獲取明天的日期
date?-d?next-day?+%Y%m%d
獲取昨天的日期
date?-d?last-day?+%Y%m%d
獲取上個月的年和月
date?-d?last-month?+%Y%m
獲取下個月的年和月
date?-d?next-month?+%Y%m
獲取明年的年份
date?-d?next-year?+%Y
下面是一些date參數的說明和一些例子
名稱?:?date
使用權限?:?所有使用者
使用方式?:?date?[-u]?[-d?datestr]?[-s?datestr]?[--utc]?[--universal]?[--date=datestr]?[--set=datestr]?[--help]?[--version]?[+FORMAT]?[MMDDhhmm[[CC]YY][.ss]]
說明?:?date?能用來顯示或設定系統的日期和時間,在顯示方面,使用者能設定欲顯示的格式,格式設定為一個加號后接數個標記,其中可用的標記列表如下?:
時間方面?:
%?:?印出
%?%n?:?下一行
%t?:?跳格
%H?:?小時(00..23)
%I?:?小時(01..12)
%k?:?小時(0..23)
%l?:?小時(1..12)
%M?:?分鐘(00..59)
%p?:?顯示本地?AM?或?PM
%r?:?直接顯示時間?(12?小時制,格式為?hh:mm:ss?[AP]M)
%s?:?從?1970?年?1?月?1?日?00:00:00?UTC?到目前為止的秒數?%S?:?秒(00..61)
%T?:?直接顯示時間?(24?小時制)
%X?:?相當于?%H:%M:%S
%Z?:?顯示時區
日期方面?:
%a?:?星期幾?(Sun..Sat)
%A?:?星期幾?(Sunday..Saturday)
%b?:?月份?(Jan..Dec)
%B?:?月份?(January..December)
%c?:?直接顯示日期和時間
%d?:?日?(01..31)
%D?:?直接顯示日期?(mm/dd/yy)
%h?:?同?%b
%j?:?一年中的第幾天?(001..366)
%m?:?月份?(01..12)
%U?:?一年中的第幾周?(00..53)?(以?Sunday?為一周的第一天的情形)
%w?:?一周中的第幾天?(0..6)
%W?:?一年中的第幾周?(00..53)?(以?Monday?為一周的第一天的情形)
%x?:?直接顯示日期?(mm/dd/yy)
%y?:?年份的最后兩位數字?(00.99)
%Y?:?完整年份?(0000..9999)
若是不以加號作為開頭,則表示要設定時間,而時間格式為?MMDDhhmm[[CC]YY][.ss],
其中?MM?為月份,
DD?為日,
hh?為小時,
mm?為分鐘,
CC?為年份前兩位數字,
YY?為年份后兩位數字,
ss?為秒數
把計?:
-d?datestr?:?顯示?datestr?中所設定的時間?(非系統時間)
--help?:?顯示輔助訊息
-s?datestr?:?將系統時間設為?datestr?中所設定的時間
-u?:?顯示目前的格林威治時間
--version?:?顯示版本編號
例子?:
顯示時間后跳行,再顯示目前日期?:?date?+%T%n%D
顯示月份和日數?:?date?+%B?%d
顯示日期和設定時間(12:34:56)?:?date?--date?12:34:56
設置系統當前時間(12:34:56):date?--s?12:34:56
注意?:?當你不希望出現無意義的?0?時(比如說?1999/03/07),則能在標記中插入?-?符號,比如說?date?+%-H:%-M:%-S?會把時分秒中無意義的?0?給去掉,像是原本的?08:09:04?會變為?8:9:4。另外,只有取得權限者(比如說?root)才能設定系統時間。?當你以?root?身分更改了系統時間之后,請記得以?clock?-w?來將系統時間寫入?CMOS?中,這樣下次重新開機時系統時間才會持續抱持最新的正確值。
ntp時間同步
linux系統下默認安裝了ntp服務,手動進行ntp同步如下
ntpdate?ntp1.nl.net
當然,也能指定其他的ntp服務器
-------------------------------------------------------------------
擴展功能
date?工具可以完成更多的工作,不僅僅只是打印出當前的系統日期。您可以使用它來得到給定的日期究竟是星期幾,并得到相對于當前日期的相對日期。了解某一天是星期幾
GNU?對?date?命令的另一個擴展是?-d?選項,當您的桌上沒有日歷表時(UNIX?用戶不需要日歷表),該選項非常有用。使用這個功能強大的選項,通過將日期作為引號括起來的參數提供,您可以快速地查明一個特定的日期究竟是星期幾:
$?date?-d?"nov?22"
Wed?Nov?22?00:00:00?EST?2006
$
在本示例中,您可以看到今年的?11?月?22?日是星期三。
所以,假設在?11?月?22?日召開一個重大的會議,您可以立即了解到這一天是星期三,而這一天您將趕到駐地辦公室。
獲得相對日期
d?選項還可以告訴您,相對于?當前日期若干天的究竟是哪一天,從現在開始的若干天或若干星期以后,或者以前(過去)。通過將這個相對偏移使用引號括起來,作為?-d?選項的參數,就可以完成這項任務。
例如,您需要了解兩星期以后的日期。如果您處于?Shell?提示符處,那么可以迅速地得到答案:
$?date?-d?’2?weeks’
關于使用該命令,還有其他一些重要的方法。使用?next/last指令,您可以得到以后的星期幾是哪一天:
$?date?-d?’next?monday’?(下周一的日期)
$?date?-d?next-day?+%Y%m%d(明天的日期)或者:date?-d?tomorrow?+%Y%m%d
$?date?-d?last-day?+%Y%m%d(昨天的日期)?或者:date?-d?yesterday?+%Y%m%d
$?date?-d?last-month?+%Y%m(上個月是幾月)
$?date?-d?next-month?+%Y%m(下個月是幾月)
使用?ago?指令,您可以得到過去的日期:
$?date?-d?’30?days?ago’?(30天前的日期)
您可以使用負數以得到相反的日期:
$?date?-d?’dec?14?-2?weeks’?(相對:dec?14這個日期的兩周前的日期)
$?date?-d?’-100?days’?(100天以前的日期)
$?date?-d?’50?days’(50天后的日期)
這個技巧非常有用,它可以根據將來的日期為自己設置提醒,可能是在腳本或?Shell?啟動文件中,如下所示:
DAY=`date?-d?’2?weeks’?+"%b?%d"`
if?test?"`echo?$DAY`"?=?"Aug?16";?then?echo?’Product?launch?is?now?two?weeks?away!’;?fi
##############################
unix?shell中的日期格式轉換
$?t_t="Jul?1?21:29"
$?date?"+%G-%m-%d?%H:%M:%S"?-d?"$t_t"?#?$t_t的格式是比較隨意的
2008-07-01?21:29:00
$?date?+%b/%d/%G?-d?"2008-07-01"
Jul/01/2008
unix?shell中的日期之間間隔的天數
$?expr?'('?$(date?+%s?-d?"2008-07-02")?-?$(date?+%s?-d?"2008-05-30")?')'?/?86400
33
##存在bcdate的話,可以直接使用。
shell中日期加減指定間隔單位
增加36小時:
$?a=`date?+%Y-%m-%d`
$?b=`date?+%Y-%m-%d?-d?"$a?+36?hours"`
10天前:
$?date?-d?"$a?-10?days"
Sun?Jun?22?00:00:00?CST?2008
以指定格式顯示文件更改后最后日期,如yyyy-mm-dd?hh24:mi:ss
$?date?"+%Y-%m-%d?%H:%M:%S"?-r?test.bak
2008-07-01?21:28:55
總結
以上是生活随笔為你收集整理的linux在shell中获取系统时间,linux在shell中获取时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux uid 内核,Linux内核
- 下一篇: linux 更改 引导分区,Linux系