Você pode obter o número de minutos múltiplo de 15 abaixo dos minutos atuais (ou minutos dados no primeiro parâmetro) com:
a=$(date date -d "2011-02-23 01:05" +%-m) # need only minutes.
a=${1:-"$a"} # or use the value from the first parameter.
a=${a#0} # remove one optional leading zero to
# avoid issues with 08 and 09.
b=$((a-a%15)) # Round down to a 15 minutes multiple.
c=$((b+15)) # end time
echo "$b $c"
Se você precisar de uma string de data completa, use:
$ printf 'java %s%02d\n' "$(date -d "2011-02-23 01:05" +"%Y:%m:%d %H:")" "$b"
java 2011:02:23 01:00
Ou, no bash:
$ printf -v a '%(%s)T\n' -1
$ printf '%(java %Y-%m-%d %H:%M:%S)T\n' "$(( a - a % (60*15) ))"
java 2018-08-30 22:45:00