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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell程式設計-09-Shell中的函式程式設計函式
- python中關於時間和日期函式的常用計算總結Python函式
- Shell 函式的使用函式
- shell函式函式
- Haskell 中的日期函式Haskell函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 日期計算
- oracle interval日期函式的bug!Oracle函式
- SPL 的日期時間函式函式
- JS-計算日期差值;計算日期之間的月數JS
- SQLSERVER日期函式(zt)SQLServer函式
- mysql 時間相關的函式 以及日期和字串互轉MySql函式字串
- ORACLE中日期和時間函式彙總(轉載)Oracle函式
- EXCEL中日期格式轉換為文字格式-函式TEXTExcel函式
- 快速獲取昨天的日期(time模組使用)
- 日期加一天的函式函式
- MySQL 的日期和時間函式MySql函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- shell自定義函式函式
- MySQL中日期和時間戳互相轉換的函式和方法MySql時間戳函式
- 計算 CRC32 的逆函式函式
- Clickhouse 時間日期函式函式
- mysql日期函式總結MySql函式
- MYSQL事件使用 日期函式MySql事件函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- oracle 10g函式大全–日期型函式Oracle 10g函式
- 函式計算——應用初探函式
- shell-計算下一天的日期
- excel日期加減計算方法 excel計算日期時間差Excel
- 從雲端計算到函式計算函式
- 基於函式計算的 BFF 架構函式架構
- matchTemplate函式各個方法的計算公式函式公式
- 外層函式的變數直接被巢狀函式引用計算函式變數巢狀
- shell高階-----建立函式函式
- 一場提升筆記本效能的變革 顯示卡塢的昨天今天和明天筆記
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- Linux下Shell日期的格式Linux
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串