Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2473128
  • 博文数量: 225
  • 博客积分: 11622
  • 博客等级: 上将
  • 技术积分: 7358
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 10:05
个人简介

我们的生活是多么美好呀!!!!

文章存档

2013年(2)

2012年(9)

2011年(59)

2010年(8)

2009年(35)

2008年(112)

分类: LINUX

2008-06-19 10:58:12

在inux的shell下获取时间戳一般用两种方法,一是直接调用系统变量;二是用纯shell脚本获取,举例如下

一,直接调用系统变量

获取今天时期:date +%Y%m%d`

获取昨天时期:`date -d yesterday +%Y%m%d`

获取前天日期:`date -d -2day +%Y%m%d`

依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d`

注意以上中间有空格

二,自己用shell实现,如下例子是已知今天日期,推算出昨天的日期的shell

startdate=`date`
d1=`date '+%Y%m%d'`
if test ! "$1" = ""
then
d1=$1
fi
echo "TODAY IS ${d1}"
yesterday()
{
YEAR=`expr substr "${d1}" 1 4`
MONTH=`expr substr "${d1}" 5 2`
DAY=`expr substr "${d1}" 7 2`
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
d2=`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}'`
}
yesterday
echo "yesterday IS ${d2}"

关于二中的shell脚本不完善,还有些bug比如计算平年和闰年的时候4月份的天数就弄错了,有兴趣的朋友可以继续.

阅读(6698) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-20 14:39:45

给楼主补充一下: 1.获取或前或后N多year,month,day,hour,minute或second的时间 $> date -d "-10second" +%Y%m%d" "%H":"%M":"%S #字符串时间 $> date -d "-10second" +%s #时间戳 解释: -: (减号) 获取此刻之前多少second的时间,可将second替换为: year,month,day,hour,minute +: (加号) 获取此刻之后多少second的时间,可将second替换为: year,month,day,hour,minute $>date -d "-20year+2month+10day-5hour-6minute+1second" 2.获取指定日志的时间戳: $> date -d "2010-06-20 14:30:00" +%s