得到unix系统的时间 并算出前一天的时间

得到unix系统的时间 并算出前一天的时间

YEAR=`date +%Y`
DAY=`date +%d`
MONTH=`date +%m`

DAY=`expr $DAY - 1`
if [ $DAY -eq 0 ]; then
  MONTH=`expr $MONTH - 1`
  if [ $MONTH -eq 0 ]; then
    MONTH=12
    YEAR=`expr $YEAR - 1`
  fi
  LASTLINE=`cal $MONTH $YEAR | grep "[0-9]" | tail -1`
  DAY=`echo $LASTLINE | sed "s/.* \([0-9][0-9]*\)/\1/"`
fi

if [ $DAY -lt 10 ]; then
        DAY=0$DAY
fi

# Finally we get the date of yesterday
YESTERDAY="$YEAR$MONTH$DAY"
echo "Yesterday is $YESTERDAY"

作者乃unix代码新手,若有错误,尽请指出,以便改正

其实我在机器上试过date +%Y%m%d -d'-1 day' 是得到昨天日期的更快捷的方式

甚至可以算出任意多天前的日期,利用date +%Y%m%d -d'-任意天数 day'

根据网友的跟帖我也结合自己的测试发现一下的一些得到其他时间的方法

date --date="1 days ago" 我测试过了,结果是Fri Aug 27 10:40:44 CST 2010
date +%Y%m%d --date="1 days ago"   执行结果 20100827
也就是,格式化同样起作用,看来比较强大
date +%Y%m%d --date="1 months ago" 执行结果 20100728 是一个月以前
date +%Y%m%d --date="1 years ago"  执行结果 20090828 是一年以前
date +%Y%m%d --date="tomorrow"  执行结果 20100829 是明天

应该还有其他的方法,时间和经验有限不能贴全,如果有网友知道的话请跟帖,谢谢

猜你喜欢

转载自arne3166.iteye.com/blog/748530