Shell 計算明天和昨天日期的函式(轉)
Shell 計算明天和昨天日期的函式(轉)[@more@]#返回月份的天數
get_mon_days()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
r1=`expr $Y % 4`
r2=`expr $Y % 100`
r3=`expr $Y % 400`
case $M in
01|03|05|07|08|10|12) days=31;;
04|06|09|11) days=30;;
esac
if [ $M -eq 02 ]
then
if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
then
days=29
else
days=28
fi
fi
echo $days
}
#返回昨天日期
get_before_date()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
D=`expr substr $1 7 2`
YY=`expr $Y - 1`
MM=`expr $M - 1`
DD=`expr $D - 1`
MM=`printf "%02d" $MM`
DD=`printf "%02d" $DD`
dd=$Y$MM
dad=`get_mon_days $dd`
be_date=$Y$M$DD
if [ $D -eq 01 ]
then
if [ $M -ne 01 ]
then
be_date=$Y$MM$dad
fi
if [ $M -eq 01 ]
then
be_date=$YY"1231"
fi
fi
echo $be_date
}
#返回明天日期
get_next_date()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
D=`expr substr $1 7 2`
YY=`expr $Y + 1`
MM=`expr $M + 1`
DD=`expr $D + 1`
MM=`printf "%02d" $MM`
DD=`printf "%02d" $DD`
r1=`expr $Y % 4`
r2=`expr $Y % 100`
r3=`expr $Y % 400`
next_date=$Y$M$DD
if [ $D -eq 30 ]
then
case $M in
04|06|09|11) next_date=$Y$MM"01";;
esac
fi
if [ $D -eq 31 ]
then
next_date=$Y$MM"01"
case $M in
12) next_date=$YY"0101";;
esac
fi
if [ $M -eq 02 ]
then
if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
then
if [ $D -eq 29 ]
then
next_date=$Y$MM"01"
fi
else
if [ $D -eq 28 ]
then
next_date=$Y$MM"01"
fi
fi
fi
echo $next_date
}
本人在HP Unix下測試透過
get_mon_days()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
r1=`expr $Y % 4`
r2=`expr $Y % 100`
r3=`expr $Y % 400`
case $M in
01|03|05|07|08|10|12) days=31;;
04|06|09|11) days=30;;
esac
if [ $M -eq 02 ]
then
if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
then
days=29
else
days=28
fi
fi
echo $days
}
#返回昨天日期
get_before_date()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
D=`expr substr $1 7 2`
YY=`expr $Y - 1`
MM=`expr $M - 1`
DD=`expr $D - 1`
MM=`printf "%02d" $MM`
DD=`printf "%02d" $DD`
dd=$Y$MM
dad=`get_mon_days $dd`
be_date=$Y$M$DD
if [ $D -eq 01 ]
then
if [ $M -ne 01 ]
then
be_date=$Y$MM$dad
fi
if [ $M -eq 01 ]
then
be_date=$YY"1231"
fi
fi
echo $be_date
}
#返回明天日期
get_next_date()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
D=`expr substr $1 7 2`
YY=`expr $Y + 1`
MM=`expr $M + 1`
DD=`expr $D + 1`
MM=`printf "%02d" $MM`
DD=`printf "%02d" $DD`
r1=`expr $Y % 4`
r2=`expr $Y % 100`
r3=`expr $Y % 400`
next_date=$Y$M$DD
if [ $D -eq 30 ]
then
case $M in
04|06|09|11) next_date=$Y$MM"01";;
esac
fi
if [ $D -eq 31 ]
then
next_date=$Y$MM"01"
case $M in
12) next_date=$YY"0101";;
esac
fi
if [ $M -eq 02 ]
then
if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
then
if [ $D -eq 29 ]
then
next_date=$Y$MM"01"
fi
else
if [ $D -eq 28 ]
then
next_date=$Y$MM"01"
fi
fi
fi
echo $next_date
}
本人在HP Unix下測試透過
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947239/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java取得昨天和明天的格式化日期Java
- 萬能的計算日期函式(轉)函式
- 計算日期的函式函式
- PostgreSQL 的昨天今天和明天SQL
- Mysql中日期計算函式MySql函式
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- Oracle的日期函式(轉)Oracle函式
- linux中用shell獲取昨天、明天或多天前的日期Linux
- js日期轉換函式JS函式
- 計算Java日期 (轉)Java
- SQL Server日期計算(使用DATEADD和DATEDIFF函式)SQLServer函式
- 日期轉換為raw的函式函式
- [轉]oracle日期函式集錦Oracle函式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- SQL Server日期計算 (轉)SQLServer
- Shell程式設計-09-Shell中的函式程式設計函式
- [轉載]學習日期、日期格式、日期的解析和日期的計算[程式碼]
- 日期函式函式
- Oracle的日期函式Oracle函式
- shell裡邊子函式與主函式的例項(轉)函式
- 關於日期計算的問題 (轉)
- SQL函式之日期函式SQL函式
- python中關於時間和日期函式的常用計算總結Python函式
- ABAP日期函式函式
- Sybase日期函式函式
- sql 日期函式SQL函式
- shell函式函式
- Haskell 中的日期函式Haskell函式
- Shell 函式的使用函式
- php日期時間計算,轉載PHP
- 【Mysql 學習】日期函式函式MySql函式
- 成員函式的說明和使用(轉)函式
- 字元函式、數字函式和日期函式字元函式
- 日期計算
- 快速獲取昨天的日期(time模組使用)
- 日期函式以及常見的日期表達函式
- UNIX系統程式設計常用庫函式說明(轉)程式設計函式
- UNIX安全程式設計及庫函式說明(轉)程式設計函式