`bash` is not the best shell for date calculation as its date-manipulation capabilities are very limited.

With `zsh`:

 zmodload zsh/datetime
 d=03012012
 strftime -rs d %m%d%Y%H ${d}12
 strftime %m%d%Y $((d-86400))

With `ksh93`:

 d=03012012
 printf "%(%m%d%Y)T\n" "${d:4}${d:0:4} yesterday"

With `bash`, you'd either have to do the calculation by hand or rely on `perl` or some GNU or FreeBSD extensions of the `date` utility.