赞助连接

赞助连接

阅 读 文 章

计算日期的shell程序

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(网络转载) | 时间:2008-08-08 | 浏览:人次 ]

初来乍到, 感觉受益匪浅。刚刚用学到的招数写了一个完整的计算日期的shell,和大家分享一下。能不能再精减,请各位大虾指点指点:
$ date_offset.sh

usage()
{
echo "使用方法:"
echo "    date_offset.sh YYYY/MM/DD offset"
echo "\n举例:"
echo "    date_offset.sh 2001/10/01 -1               返回: 2001/09/30"
echo "    date_offset.sh 2001/10/01 5                返回: 2001/10/06\n"
exit 2
}

yesterday()
{
YEAR=`echo $1|awk -F "/" '{print $1}'`
MONTH=`echo $1|awk -F "/" '{print $2}'`
DAY=`echo $1|awk -F "/" '{print $3}'`
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 '{print $NF}'`
else
  DAY=`expr $DAY - 1`
fi
echo "$YEAR $MONTH $DAY"|awk '{if (length($2)==1) $2=0$2;if (length($3)==1) $3=0$3;printf "%s/%s/%s",$1,$2,$3}'
}

tomorrow()
{
YEAR=`echo $1|awk -F "/" '{print $1}'`
MONTH=`echo $1|awk -F "/" '{print $2}'`
DAY=`echo $1|awk -F "/" '{print $3}'`
LASTDAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'`
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 (length($2)==1) $2=0$2;if (length($3)==1) $3=0$3;printf "%s/%s/%s",$1,$2,$3}'
}

# 检查参数数目
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 "/" '{print $1}'`
TMP_MONTH=`echo $1|awk -F "/" '{print $2}'`
TMP_DAY=`echo $1|awk -F "/" '{print $3}'`

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"
TAG标签 : 程序 日期 计算 echo if awk MONTH then fi expr print

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.