計算日期的shell程式

2021-08-25 20:53:59 字數 2150 閱讀 7668

$date_offset.sh

usage()

yesterday()

' `month=`echo$1|awk-f" /"

' ' `

day=`echo$1|awk-f" /"

' ' `

if[$day-eq1]

then

if[$month-eq1]

then

year=`expr$year-1`

month=12

else

month=`expr$month-1`

fiday=`echo/`cal$month$year/`|tail-n1|awk' ' `

else

day=`expr$day-1`

fiecho" $year$month$day" |awk' '

}tomorrow()

' `month=`echo$1|awk-f" /"

' ' `

day=`echo$1|awk-f" /"

' ' `

lastday=`echo/`cal$month$year/`|tail-n1|awk' ' `

if[$day-eq$lastday]

then

if[$month-eq12]

then

year=`expr$year+1`

month=1

else

month=`expr$month+1`

fiday=1

else

day=`expr$day+1`

fiecho" $year$month$day" |awk' '

}#檢查引數數目

if[$#-ne2]

then

echo" /n呼叫出錯:引數數目不對!/n"

usage

fi#檢查引數1長度

if[`exprlength$1`-ne10]

then

echo" /n呼叫出錯:日期格式不正確!/n"

usage

fitmp_year=`echo$1|awk-f" /"

' ' `

tmp_month=`echo$1|awk-f" /"

' ' `

tmp_day=`echo$1|awk-f" /"

' ' `

if!expr$tmp_year+$tmp_month+$tmp_day>/dev/null2>&1

then

echo" /n呼叫出錯:日期格式不正確!/n"

usage

fiif[`exprlength$tmp_year`-ne4]

then

echo" /n呼叫出錯:日期格式不正確!/n"

usage

fiif[$tmp_month-lt1]||[$tmp_month-gt12]

then

echo" /n呼叫出錯:日期格式不正確!/n"

usage

filast_day=`echo/`cal$tmp_month$tmp_year/`|tail-n1|awk' ' `

if[$tmp_day-lt1]||[$tmp_day-gt$last_day]

then

echo" /n呼叫出錯:日期格式不正確!/n"

usage

fi#檢查引數2是否為數值

expr$2+0>/dev/null2>&1

if[!$?]

then

echo" /n呼叫出錯:日期偏移量應為整數值!/n"

usage

fitmp_date=$1

if[$2-lt0]

then

inc=-1

count=$2

else

inc=1

count=`expr0-$2`

fiwhile[$count-lt0]

doif[$inc-gt0]

then

tmp_date=`tomorrow$tmp_date`

else

tmp_date=`yesterday$tmp_date`

ficount=`expr$count+1`

done

echo$tmp_date

#在要sco5.0.5下測試通過。

計算日期的shell程式

date offset.sh usage yesterday month echo 1 awk f day echo 1 awk f if day eq 1 then if month eq 1 then year expr year 1 month 12 else month expr month...

shell日期計算

當對系統當前時間進行加減時,只需要輸入 date d 3 hour y m d h 可以獲取3小時前的時間。如果按照自己設定的時間進行加減時,不能輸入 date d 2014040722 3 hour y m d h 這樣輸出的值不正確,我測試的輸出值為 201404072121。而需要輸入 dat...

shell日期 格式和計算

man date 可以直接檢視日期的格式 列出常用的年月日 date d 2012 04 10 1 day y m d 2012 04 09 date d 2012 04 10 1 day y m d 2012 04 11 date d 1 week y m d 2012 04 15 date d ...