Если он действительно должен быть однострочным и не имеет значения, понятен ли код, я думаю, что следующее утверждение должно работать:
Date yesterday = new SimpleDateFormat("yyyyMMdd").parse(
""+(Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(new Date()))-1));
Форматирует текущую дату как «ггггМдд», например «20100812» на сегодня, анализирует его как int: 20100812, вычитает одно: 20100811, а затем анализирует дату «20100811», используя предыдущий формат. Это также будет работать, если сегодня первое число месяца, так как 0-е число анализируется мягким DateFormat как последний день предыдущего месяца.
Должен также работать формат «ггггДДД» (D - день года).
Для первого дня текущего месяца вы можете использовать аналогичный трюк:
Date firstday = new SimpleDateFormat("yyyyMMdd").parse(
new SimpleDateFormat("yyyyMM").format(new Date())+"01");