subtract days from a date in bash

前端 未结 6 1635
梦谈多话
梦谈多话 2020-12-13 23:13

I want to subtract \"number of days\" from a date in bash. I am trying something like this ..

echo $dataset_date #output is 2013-08-07

echo $date_diff #outp         


        
相关标签:
6条回答
  • 2020-12-13 23:53

    You are specifying the date incorrectly. Instead, say:

    date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d
    

    If you need to store it in a variable, use $(...):

    p_dataset_date=$(date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d)
    
    0 讨论(0)
  • 2020-12-13 23:57

    Below code gives you date one day lesser

    ONE=1
    dataset_date=`date`
    TODAY=`date -d "$dataset_date - $ONE days" +%d-%b-%G`
    echo $TODAY
    
    0 讨论(0)
  • 2020-12-13 23:58

    To me, it makes more sense if I put the options outside (easier to group), in case I will want more of them.

    date -d "$dataset_date - $date_diff days" +%Y-%m-%d
    

    Where:

     1. -d --------------------------------- options, in this case 
                                             followed need to be date 
                                             in string format (look up on $ man date)
     2. "$dataset_date - $date_diff days" -- date arithmetic, more 
                                             have a look at article by [PETER LEUNG][1]
     3. +%Y-%m-%d -------------------------- your desired format, year-month-day
    
    0 讨论(0)
  • 2020-12-14 00:13

    Here is my solution:

    echo $[$[$(date +%s)-$(date -d "2015-03-03 00:00:00" +%s)]/60/60/24]
    

    It calculates number of days between now and 2015-03-03 00:00:00

    0 讨论(0)
  • 2020-12-14 00:13

    If you're not on linux, maybe mac or somewhere else, this wont work. you could check with this:

    yesterday=$(date  -v-1d    +"%Y-%m-%d")
    

    to get more details, you could also see

    man date
    
    0 讨论(0)
  • 2020-12-14 00:17

    one liner for mac os x:

    yesterday=$(date -d "$date -1 days" +"%Y%m%d")
    
    0 讨论(0)
提交回复
热议问题