shell指令碼獲取日期的格式

2021-07-10 13:00:02 字數 2820 閱讀 6484

前一天的日期

date -d "1 day ago" +"%y%m%d"

前乙個月的日期

date -d "1 month ago" +"%y%m%d"

距離上乙個月少一天

date -d "-1 day ago 1 month ago" +"%y%m%d"

距離去年的今天差一天

date -d "1 day ago -1 year ago 1 month ago" +"%y%m%d"

下面是shell的例子:

daydel=`date -d "1 month ago" +%m%d`   //乙個月前的日期

echo $daydel

date命令的功能是顯示和設定系統日期和時間。

date命令中各選項的含義分別為:

-d , --date 提供日期串作為輸入

-s , --set 設定日期格式

-u , --universal 顯示或設定通用時間

日期格式字串列表

%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 從2023年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 www.1987.name &> /dev/null

end=$(date +%s)

difference=$(( end - start ))

echo $difference seconds.

shell獲取日期

1.通過shell獲取當前8位日期,並賦給變數,並且使用變數作為檔名,建立資料夾 ls date date y m d mkdir 獲取日期注意事項 date y m d 這個字串是被英文狀態下的esc下面那個鍵。獲取變數注意事項 必須有 與組成。2.獲取時分秒 date y m d h m s 3...

shell指令碼格式轉換

初學shell程式設計的研發人員通常都會遇到這樣的問題,在windows下編輯的shell指令碼放到linux環境下比如手機中執行時就會出一些莫名其妙的錯誤,及時是一些非常簡單的shell命令也會報錯。其實錯誤的原因只有乙個就是格式問題,在windows下編輯出的shell指令碼格式為dos格式,而...

Shell迴圈獲取日期

大於 gt greater than 小於 lt less than 大於或等於 ge greater than or equal 小於或等於 le less than or equal 不相等 ne not equal bin bash 倒序按天遍歷日期 傳入遍歷的開始時間和結束時間 startd...