当前位置:   article > 正文

shell日期:格式和计算_shell日期加一个月

shell日期加一个月

格式

man date 可以直接查看日期的格式
列出常用的年月日


  • %y last two digits of year (00…99)
    %Y year


  • %m month (01…12)


  • %u day of week (1…7); 1 is Monday
    %U week number of year, with Sunday as first day of week (00…53)


  • %d day of month (e.g, 01)
    %e day of month, space padded; same as %_d

  • 小时
    %H hour (00…23)

  • 分钟
    %M minute (00…59)


  • %S second (00…60)

  • 其他
    %j day of year (001…366)
    %T time; same as %H:%M:%S
    %D date; same as %m/%d/%y

计算

 $ date -d "2012-04-10 -1 day " +%Y-%m-%d
2012-04-09

$ date -d "2012-04-10 +1 day " +%Y-%m-%d
2012-04-11

$ date -d "-1 week " +%Y-%m-%d
2012-04-15

$ date -d "+1 week " +%Y-%m-%d
2012-04-29

$ date -d "+1 month " +%Y-%m-%d
2012-05-22

$ date -d "-1 month " +%Y-%m-%d
2012-03-22

$ date -d "-1 year " +%Y-%m-%d
2011-04-22

$ date -d "+1 year " +%Y-%m-%d
2013-04-22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

需要注意的是 +1 month 这个动作有可能并不会如你所愿。
例如

# 如果是5月31,想要得到6月30,结果会不如预期
date -d "2020-05-31 +1 month " +%Y-%m-%d
2020-07-01

# 如果是2月28,想要得到3月31,则会不如预期
date -d "2020-02-28 +1 month " +%Y-%m-%d
2020-03-28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

原因是 +1 month 操作的是:加当前month天数。
此时如果想要获得月,可以先格式化为 当前月第一天,再使用+1 month 得到下个月,再做相应的数据格式换算。

# 格式化为这个月第一天
begin_date=date -d "${date_variable}" +%Y-%m-%01
# 得到下一个月第一天
next_month=date-d"$begin_date +1 month" +%Y-%m-%d  
  • 1
  • 2
  • 3
  • 4

常用循环代码

日期的比较用 > 和 <
shell 也用 < 和 > 操作符进行重定向,所以必须用 < 或 > 加以转义

begin_date=$1
end_date=$2
sql_file=$3
begin_date=`date -d"$begin_date" "+%Y-%m-01"`
while [ "$begin_date" \< "$end_date" ]
    do
        #spark-sql --hiveconf belong_date=$begin_date -f $sql_file 
        begin_date=`date -d"$begin_date +1 month" +%Y-%m-%d`
    echo $begin_date
    done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/914185
推荐阅读
相关标签
  

闽ICP备14008679号