$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 ...