計算日期的shell程式

2021-05-25 13:36:40 字數 2445 閱讀 1512

$ 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 - 1` 

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

else 

day=`expr $day - 1` 

fi echo " $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 -eq 12 ] 

then 

year=`expr $year + 1` 

month=1 

else 

month=`expr $month + 1` 

fi day=1 

else 

day=`expr $day + 1` 

fi echo " $year $month $day" |awk ' '

} # 檢查引數數目 

if [ $# -ne 2 ] 

then 

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

usage 

fi # 檢查引數1長度 

if [ `expr length $1` -ne 10 ] 

then 

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

usage 

fi tmp_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/null 2>&1 

then 

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

usage 

fi if [ `expr length $tmp_year` -ne 4 ] 

then 

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

usage 

fi if [ $tmp_month -lt 1 ] || [ $tmp_month -gt 12 ] 

then 

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

usage 

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

if [ $tmp_day -lt 1 ] || [ $tmp_day -gt $last_day ] 

then 

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

usage 

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

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

if [ ! $? ] 

then 

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

usage 

fi tmp_date=$1 

if [ $2 -lt 0 ] 

then 

inc=-1 

count=$2 

else 

inc=1 

count=`expr 0 - $2` 

fi while [ $count -lt 0 ] 

do if [ $inc -gt 0 ] 

then 

tmp_date=`tomorrow $tmp_date` 

else 

tmp_date=`yesterday $tmp_date` 

fi count=`expr $count + 1` 

done 

echo $tmp_date 

#在要sco 5.0.5下測試通過。

計算日期的shell程式

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

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