关闭

Linux:shell完美获取上月,本月,下月年月

标签: shell
7513人阅读 评论(2) 收藏 举报
分类:
#!/bin/sh
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

#需求:获取上月年月,本月年月,下月年月
#      2016-06       2016-07   2016-08
#
#坑01 
#2016年当month为01的时候,上年月份为2015-12
#2016年当month为12的时候,下年月份为2017-01
#2016年当month为其余月份时候,月份加1或者减一
#
#坑02  
# 1、使用date时候,如果系统时间为2016-05-31
#    `date -d "1 month ago" +%Y-%m` 为2016-05
# 2、使用date时候,如果系统时间为2016-05-31
#    `date -d "1 month " +%Y-%m` 为2016-07
#


year=`date -d "0 month ago" +%Y`

month=`date -d "0 month ago" +%m`

nowdate=`date -d "0 month ago" +%Y-%m` 

one='01'
if [ $month == $one ]
then
echo "当month为01的时候,上年月份为2015-12"
LastYear=$[$year-1]
Lastdate=$LastYear-12
Nextdate=$year-0$[$month+1] 
echo $Lastdate
echo $nowdate
echo $Nextdate
fi

twelve='12'
if [ $month == $twelve ]
then
echo "当month为12的时候,下年月份为2017-01"
NextYear=$[$year+1]
Lastdate=$year-$[$month-1]
Nextdate=$NextYear-01
echo $Lastdate
echo $nowdate
echo $Nextdate
fi


if [ $month -ne $twelve ]
then 
  if [ $month -ne $one ]
  then
      ten=10
      if [ $[$month-1] -lt $ten ]
      then
      monthmin=0$[$month-1]
      else
      monthmin=$[$month-1 ]
      fi

      if [ $[$month+1] -lt $ten ]
      then
      monthadd=0$[$month+1]
      else
      monthadd=$[$month+1 ]
      fi

      echo $year-$monthmin
      echo `date -d "0 month ago" +%Y-%m`
      echo $year-$monthadd
  fi
fi

如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!微信

这里写图片描述

0
0
查看评论

shell 取得上个月的开始结束日期

#!/bin/bashif [ $# -eq 1 ]; then day=$1else day=`date +%Y%m%d`fitmp_day_dis=$(date +%e -d "${day}")day_dis=$(expr $tmp_day_dis - 1)end_last_...
  • wwwasw
  • wwwasw
  • 2015-11-12 13:15
  • 1036

shell中date命令对month进行加减操作的bug

shell脚本中如何取上个月的月份呢?很容易能想到下面的命令: date +%Y%m -d '-1 month' 或者 date +%Y%m -d 'last month' 在大部分情况下这个命令运...
  • yycdaizi
  • yycdaizi
  • 2015-01-15 12:58
  • 3767

shell获取上个月份

法一: #!/bin/sh YEAR=`date +%Y` MON1=`date +%m` if [ $MON1 -eq 01 ] then {     MONTH=12     YEAR=`expr $YEAR  - 1` } ...
  • benwang_
  • benwang_
  • 2011-08-01 21:20
  • 1918

shell中判断当前时间是否为月末的方法

date -d tomorrow '+%d' date -d yesterday '+%d' 得到昨天的日期
  • aaajj
  • aaajj
  • 2011-05-26 20:31
  • 5113

在shell脚本中获取上个月最后一天的日期

在shell脚本中获取上个月最后一天的日期
  • xiaowenK
  • xiaowenK
  • 2017-01-04 14:55
  • 4041

linux在shell中获取时间 date巧用

获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28   date1=$(date --date='1 days ago +%Y%m%d')    #前一天的日期 date1=$(date --date='...
  • classhao1
  • classhao1
  • 2012-11-14 14:42
  • 31229

shell下获取上一个月,星期时间和时间戳的范围

#!/bin/bash #一月前 historyTime=$(date "+%Y-%m-%d %H" -d  '1 month ago') echo ${historyTime} historyTimeStamp=$(date -d &quo...
  • Simpletwt
  • Simpletwt
  • 2017-01-09 11:12
  • 1239

Linux 根据当前日期获取上个月的第一天和最后一天

#! /bin/sh year=$(date +%y) month=$(date +%m) premonth=$((month-1)) date=$(cal $premonth $year|xargs|awk '{print $NF}') year=$(date +%Y) ...
  • wxloveyun
  • wxloveyun
  • 2015-11-26 20:34
  • 2247

linux 常用日期 查询前一天 当月1号 上个月第一条和最后一天 上个月

TodayYM=`/bin/date  +%Y-%m` echo $TodayYM #当月1号 CurrntMontFirstDay=$TodayYM"-01 00:00:00" echo $CurrntMontFirstDay #当月1号转为s c...
  • liusiqingsong
  • liusiqingsong
  • 2017-10-13 14:16
  • 228

linux 获取某个日期对应的月末日期

date -d"$(date -d'2016-03-19 1 month' +'%Y-%m-01') -1 days" +"%F” 分析 1.先将给定的日期加一个月,并输出该月的一号 2.再减一天就得到所要的月末日期.
  • h_hzhou
  • h_hzhou
  • 2016-07-27 10:42
  • 1270
    【个人简介】
    姓名:余辉

    地点:北京昌平

    学历:中科院硕士

    QQ :348835027

    微信:silentwolfyh

    我的新书【点击图片】
    (京东)(天猫)(当当)

    本书QQ群:275243793
    个人资料
    • 访问:511355次
    • 积分:7845
    • 等级:
    • 排名:第3190名
    • 原创:286篇
    • 转载:23篇
    • 译文:24篇
    • 评论:95条
    博客专栏