在實際操作中,一些腳本中會調(diào)用明天,或者昨天,或更多天前的日期,本文將敘述講述用date命令實現(xiàn)時間的顯示。在Linux系統(tǒng)中用man?date -d 查詢的參數(shù)說的比較模糊,以下舉例進一步說明:
# man date
-d, --date=STRING
display?time?described by STRING, not ‘now’
查看明天日期
# 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
查看明年日期
# date -d next-year +%Y
獲取昨天或多天前的日期
DATE=$(date +%Y%m%d --date ’2 days ago’)
date命令能用來顯示或設(shè)定系統(tǒng)的日期和時間,在顯示方面,使用者能設(shè)定欲顯示的格式,格式設(shè)定為一個加號后接數(shù)個標(biāo)記,其中可用的標(biāo)記列表如下:
時間方面
- %: 印出
- % %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 到目前為止的秒數(shù) %S: 秒(00..61)
- %T: 直接顯示時間 (24 小時制)
- %X: 相當(dāng)于 %H:%M:%S
- %Z: 顯示時區(qū)
日期方面
- %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:年份的最后兩位數(shù)字 (00.99)
- %Y:完整年份 (0000..9999)
若是不以加號作為開頭,則表示要設(shè)定時間,而時間格式為:MMDDhhmm[[CC]YY][.ss]
其中:
- MM 為月份
- DD 為日
- hh 為小時
- mm 為分鐘
- CC 為年份前兩位數(shù)字
- YY 為年份后兩位數(shù)字
- ss 為秒數(shù)
選項:
- -d datestr: 顯示 datestr 中所設(shè)定的時間 (非系統(tǒng)時間)
- --help: 顯示輔助訊息
- -s datestr: 將系統(tǒng)時間設(shè)為 datestr 中所設(shè)定的時間
- -u: 顯示目前的格林威治時間
- --version: 顯示版本編號
例子:
- 顯示時間后跳行,再顯示目前日期:date +%T%n%D
- 顯示月份和日數(shù):date +%B %d
- 顯示日期和設(shè)定時間(12:34:56):date --date 12:34:56
- 設(shè)置系統(tǒng)當(dāng)前時間(12:34:56):date --s 12:34:56
注意:當(dāng)你不希望出現(xiàn)無意義的 0 時(比如說 1999/03/07),則能在標(biāo)記中插入 - 符號,比如說 date +%-H:%-M:%-S 會把時分秒中無意義的 0 給去掉,像是原本的 08:09:04 會變?yōu)?8:9:4。另外,只有取得權(quán)限者(比如說 root)才能設(shè)定系統(tǒng)時間。 當(dāng)你以 root 身分更改了系統(tǒng)時間之后,請記得以 clock -w 來將系統(tǒng)時間寫入 CMOS 中,這樣下次重新開機時系統(tǒng)時間才會持續(xù)抱持最新的正確值。
擴展功能
date 工具可以完成更多的工作,不僅僅只是打印出當(dāng)前的系統(tǒng)日期。您可以使用它來得到給定的日期究竟是星期幾,并得到相對于當(dāng)前日期的相對日期。了解某一天是星期幾。
GNU 對 date 命令的另一個擴展是 -d 選項,當(dāng)您的桌上沒有日歷表時(UNIX 用戶不需要日歷表),該選項非常有用。使用這個功能強大的選項,通過將日期作為引號括起來的參數(shù)提供,您可以快速地查明一個特定的日期究竟是星期幾:
# date -d "nov 22"
2011年 11月 22日 星期二 00:00:00 CST
在本示例中,您可以看到今年的 11 月 22 日是星期二。所以,假設(shè)在11月22日召開一個重大的會議,您可以立即了解到這一天是星期二,而這一天您將趕到駐地辦公室。
獲得相對日期
-d 選項還可以告訴您,相對于當(dāng)前日期若干天的究竟是哪一天,從現(xiàn)在開始的若干天或若干星期以后,或者以前(過去)。通過將這個相對偏移使用引號括起來,作為 -d 選項的參數(shù),就可以完成這項任務(wù)。
例如,您需要了解兩星期以后的日期。如果您處于Shell提示符處,那么可以迅速地得到答案:
# date -d ’2 weeks’
關(guān)于使用該命令,還有其他一些重要的方法。使用 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天前的日期)
您可以使用負數(shù)以得到相反的日期:
# date -d ’dec 14 -2 weeks’ (相對:dec 14這個日期的兩周前的日期)
# date -d ’-100 days’ (100天以前的日期)
# date -d ’50 days’(50天后的日期)文章來源:http://www.zghlxwxcb.cn/news/detail-771699.html
這個技巧非常有用,它可以根據(jù)將來的日期為自己設(shè)置提醒,可能是在腳本或Shell啟動文件中,如下所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-771699.html
DAY=`date -d ’2 weeks’ +"%b %d"` if test "`echo $DAY`" = "Aug 16"; then echo ’Product launch is now two weeks away!’; fi
到了這里,關(guān)于linux中用date命令獲取昨天、明天或多天前后的日期的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!