date 命令

获取上个月的时间

#! /bin/sh 
nowdate=`date +%Y%m01` #本月第一天 
startdate=`date -d"$nowdate last month" +%Y%m%d` #上个月第一天 
enddate=`date -d"$nowdate last day" +%Y%m%d` #上个月最后一天 
#遍历上个月的每一天 
while (( $startdate <= $enddate )) 
do 
  echo $startdate 
  startdate=`date -d "+1 day $startdate" +%Y%m%d` 
done

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

date -d"$(date -d'2016-03-19 1 month' +'%Y-%m-01') -1 days" +"%F"


[erdong@bi_test_c investor_data]$ begindate='2015-11-01'
[erdong@bi_test_c investor_data]$ mid=$(date -d"$begindate 1 month" +'%Y-%m-01')
[erdong@bi_test_c investor_data]$ enddate=$(date -d "$mid -1 days" +"%F")
[erdong@bi_test_c investor_data]$ echo $mid
2016-12-01
[erdong@bi_test_c investor_data]$ echo $enddate
2016-11-30

获取指定日期前 N 天的日期

#!/bin/sh

# 参数:
# args[0] ,数据日期,日期格式yyyy-MM-dd
# 取30天以前的日期

function get_date_30daysbefore()
{
 sec=`date -d $1 +%s`
 sec_30daysbefore=$((sec - 86400*30))
 days_before=`date -d @$sec_30daysbefore +%F`
 echo $days_before
}

if [ $# == 1 ]; then
 today=$1
 dates_30=`get_date_30daysbefore $1`
else
 today=`date -d -1days '+%Y-%m-%d'`
 dates_30=`date -d -30days '+%Y-%m-%d'`
fi

echo $today
echo $dates_30

不带参数,从当前时间开始算

$ ./test.sh

2016-10-28
2016-09-29

传参运行

$ ./test.sh 2015-10-29
2015-10-29
2015-09-29

results matching ""

    No results matching ""