bash round minutes to 5
To do this you can subtract the minutes modulo 5 from the total minutes. To print it out:
echo "$(date "+%Y%m%d%H%M") - ($(date +%M)%5)" | bc
To save it to a variable:
my_var=$(echo "$(date "+%Y%m%d%H%M") - ($(date +%M)%5)" | bc)
This relies on your date format string remaining as it is now - a string of numbers.
Example output:
$ date "+%Y%m%d%H%M"
201404010701
$ echo "$(date "+%Y%m%d%H%M") - ($(date +%M)%5)" | bc
201404010700
A little string manipulation:
case $TIMESTAMP in
*[1234]) TIMESTAMP=${TIMESTAMP%?}0;;
*[6789]) TIMESTAMP=${TIMESTAMP%?}5;;
esac
${TIMESTAMP%?}
removes the last character. Ref: http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
Not exactly bash only but using dateutils' dround utility, it boils down to:
$ dround now -5m
2014-04-01T10:35:00
or with your format specifiers:
$ dround now -5m -f '%Y%m%d%H%M'
201404011035
Disclaimer: I am the author of that project.