分页: 1 / 1

Shell中日期运算

发表于 : 2007-11-27 19:04
yuffey
#!/bin/sh

###############################
# A Bourne Shell Script #
# 功能: 打印昨天的日期 #
# 输出格式: Year Month Day #
################################

# 设置当前的年、月、日
month=`date +%m`
day=`date +%d`
year=`date +%Y`

# 月份加0,使得月份成为“整型” :)
month=`expr $month + 0`

# 当前日期减一,得到昨天的日子
day=`expr $day - 1`

# 如果上面得到的昨天的日子为0的话就得考虑月份了
if [ $day -eq 0 ]; then
# 当前月份减一得到上一个月份
month=`expr $month - 1`
# 如果上面得到的上一个月份为0的话就得考虑年份了
if [ $month -eq 0 ]; then
month=12
day=31
year=`expr $year - 1`
# 如果月份非0就需要确定当前月份的天数
else
case $month in
1|3|5|7|8|10|12) day=31;;
4|6|9|11) day=30;;
2)
if [ `expr $year % 4` -eq 0 ]; then
if [ `expr $year % 400` -eq 0 ]; then
day=29
elif [ `expr $year % 100` -eq 0 ]; then
day=28
else
day=29
fi
else
day=28
fi
;;
esac
fi
fi

# 打印出昨天的年、月、日
echo $year $month $day
exit 0

上面是一个得到昨天日期的SHELL,其实十天后的可以类推的。
基本的思想是一样的。
1. expr运算符;
2. 关于跨月、跨年的判断。

发表于 : 2007-11-27 20:29
eexpress
不如编程软件的库了。这个不是shell强项。

发表于 : 2007-11-29 10:02
bones7456
这个.自己搞的话,容易出错的,练手还可以.

发表于 : 2007-12-07 21:51
xiawuming
直接用date命令不就行了?