UNIX下获取前一天后一天的日期-创新互联

在Linux下很容易解决这个问题

创新互联是一家专业提供江津企业网站建设,专注与网站设计制作、网站制作、H5场景定制、小程序制作等业务。10年已为江津众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

       date  +"%Y%m%d" -d  "+n days"     今天的后n天日期  

        date  +"%Y%m%d" -d  "-n days"     今天的前n天日期

在UNIX下没有'-d'选项,所以无法使用上面的方法

    网上看到有一种通过时区进行调整echo `TZ=aaa16 date +%Y%m%d\ %H:%M:%S`

UNIX下获取前一天后一天的日期

注意:date打印的并不是本地时区的时间,而是标准时间,既伦敦时间。

    伦敦在西一区,北京在东八区相差八个时区。

    TZ是一个系统的环境变量,记录了系统所在的时区,aaa可以为任意字符串,16表示与标准时间的时差。

     输入env|grep TZ输出TZ=EAT-8

同理,通过echo `TZ=aaa-32 date +%Y%m%d\ %H:%M:%S`可获取后一天的日期

以上两种是比较简单的获取方法,如果觉得这种方法不太靠谱,可以写个shell脚本,以下自己写的可以参考下

#!/bin/sh #输入日期参数,不输入默认当天 if [ $# -eq 1 ] then    today=$1 else    today=`date +%Y%m%d` fi #获取年月日 year=`echo $today|cut -c 1-4` month=`echo $today|cut -c 5-6` day=`echo $today|cut -c 7-8` if [ $day -eq 1 ] then    month=`expr $month - 1`    #月份减一后如果为0则为上一年,月份置12,年份减一    [ $month -eq 0 ] && month=12 && year=`expr $year - 1`    #获取年月日历    aaa=`cal $month $year`    #获取最后一天    day=`echo $aaa|awk '{print $NF}'` else    day=`expr $day - 1` fi #如果日期只有一位则前补0 expr $day : "^.$" > /dev/null && day=0$day expr $month : "^.$" > /dev/null && month=0$month lastdate=$year$month$day echo "lastdate="$lastdate year=`echo $today|cut -c 1-4` month=`echo $today|cut -c 5-6` day=`echo $today|cut -c 7-8` aaa=`cal $month $year` bbb=`echo $aaa|awk '{print $NF}'` [ $bbb -eq $day ] && month=`expr $month + 1` && day=0 [ $month -gt 12 ] && month=1 && year=`expr $year + 1` day=`expr $day + 1` expr $day : "^.$" > /dev/null && day=0$day expr $month : "^.$" > /dev/null && month=0$month nextdate=$year$month$day echo "nextdate="$nextdate exit 0

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:UNIX下获取前一天后一天的日期-创新互联
标题路径:http://ybzwz.com/article/dojocd.html