日期:2014-05-16  浏览次数:20622 次

得到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 是明天

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

1 楼 NetBus 2010-08-27  
date --date="1 days ago"
2 楼 arne3166 2010-08-28  
NetBus 写道
date --date="1 days ago"

高手,直接执行这条语句的到的结果就是昨天的日期,并且还格式和今天一样,不知道兄弟是否可以详细讲解一下各个时间段的写法,比如一分钟前,一个月前,一周前 还有一周后,如果有文档参考也好!学习的快乐在于分享,谢谢楼上了