分享
 
 
 

用date获得前一天的日期

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

neo:

如果是linux上的date,直接用

date -d yesterday

date -d yesterday +%Y%m%d

另外如

date -d '3 days ago'

date -d tomorrow

date -d '3 days'

如果不是gnu/linux上的date命令,请往下看

----------------------------------------------------------------

好象有date 有-24 有+%y%m%d等,谢了。

还有有办法获得3天前的日期吗?

唉,在b shell没有这个用法了,要想用纯shell做几天前后的运算,只有自己想办法了,+%y%m%d用于控制输出格式,作用有限,要想做的话,参见这个帖子大家的发言:

我的确在哪儿看到用一条命令就可以取昨天或明天的日期,

参数中有-24或+24。没那么复杂

好象用到了参数TZ=-24;export TZ什么的

改变时区,应该可以实现,确实是个好方法。

不会吧,你说的俺都明白了,你自己还不懂?

date命令的显示是与环境变量TZ有关的

看以下的命令操作,你应该便明白了,

$#看当前时区

$echo $TZ

CST-8

$#显示当前时间

$date

Mon Apr 2 15:48:36 CST 2002

$#改变当前时区,

TZ=CST+16;export TZ

$#显示当前时间(中间未改变系统时间,但date命令的显示已为昨天)

Mon Apr 1 15:48:33 CST 2002

#!/bin/sh

# ydate: A Bourne shell script that

# prints yestarday's date

# Output form: Month Day Year

# From Focus on Unix: http://unix.about.com

# Set the current month day and year.

month=`date +%m`

day=`date +%d`

year=`date +%Y`

# Add 0 to month. This is a

# trick to make month an unpadded integer.

month=`expr $month + 0`

# Subtract one from the current day.

day=`expr $day - 1`

# If the day is 0 then determine the last

# day of the previous month.

if [ $day -eq 0 ]; then

# Find the preivous month.

month=`expr $month - 1`

# If the month is 0 then it is Dec 31 of

# the previous year.

if [ $month -eq 0 ]; then

month=12

day=31

year=`expr $year - 1`

# If the month is not zero we need to find

# the last day of the month.

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

# Print the month day and year.

echo $month $day $year

exit 0

时区转换实在是太精妙了!:-)

如果在shell中改了时区,执行完后,系统真正的时区还是正确的吗?

回楼上:最好你要把TZ的设置该回去了。

不过我在实践中用的方法是:

如果你的主机能够连接到数据库的话,比如可以连接到SYBASE数据库,那就可以利用数据库里面计算时间的丰富的函数了,比如

dateadd(day,getdate(),-1)

就能得到最天的日期了

因为这个贴子被版主盖过章,所以在此跟一下。

最近经常看到有网友关于相对日期问题的贴子,这在shell下进行解决时比较头疼。现将我作的几个程序贴出来与大家分享。虽然是用c写的,把它们贴在这里,我想大家也不会太反对的。其中一个程序以前发表在sco版下,现在早已淹没在汪洋大海中了,无从查找。

因为是早先刚学c时的作品,且英文又不行,故写出的程序比较难看,请大家别见笑。

相关链接:

date=`expr `date +%m%d` - 1`

这儿有一个我写的计算昨天的函数,可能是纯shell中唯一的简单解决方案吧,要想将其应用在计算任意天前后,恐怕还是不太方便的,看看,能否满足?

yesterday ()

{

_year=$1;_month=$2;_day=$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`|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;print $1,$2,$3}'

}

unix 我没有试过,linux上可以用

date --date "1 days ago"

yy=`date +%Y` #Year yyyy

mm=`date +%m` #Month mm

dd=`date +%d` #Day dd

if [ $dd = "01" ] #如果为月初则计算上月末的日期

then

lm=`expr $mm - 1 ` #lm 上月

if [ $lm -eq 0 ]

then lm=12

fi

case $Fm in

1|3|5|7|8|10|12) Yesterday=31 ;;

4|6|9|11) Yesterday=30 ;;

2) #计算闰月

if [ ` expr $yy % 4 ` -eq 0 -a `expr $yy % 100 ` -ne 0 -o ` expr $yy % 400 ` -eq 0 ]

then Yesterday=29

else Yesterday=28

fi ;;

esac

else #如果不是月初的处理

Yesterday=`expr $dd - 1 `

if [ $Yesterday -lt 10 ] ###上旬日期处理

then Yesterday=0$Yesterday

fi

fi

结果: today=20020301 yesterday=28

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有