Si elle doit vraiment être un si le code est compréhensible et il n'a pas d'importance en une ligne, je pense que la déclaration suivante devrait fonctionner:
Date yesterday = new SimpleDateFormat("yyyyMMdd").parse(
""+(Integer.parseInt(new SimpleDateFormat("yyyyMMdd").format(new Date()))-1));
il formate la date du jour comme "aaaaMMdj", par ex. "20100812" pour aujourd'hui, l'analyse comme un int: 20100812, soustrait un: 20100811, puis analyse la date "20100811" en utilisant le format précédent. Il fonctionnera également si aujourd'hui est le premier d'un mois, puisque le 0 d'un mois est analysé par un DateFormat indulgent comme le dernier jour du mois précédent.
Le format "aaaaDDD" devrait également fonctionner (D étant le jour de l'année).
Pour le premier jour du mois en cours, vous pouvez utiliser une astuce similaire:
Date firstday = new SimpleDateFormat("yyyyMMdd").parse(
new SimpleDateFormat("yyyyMM").format(new Date())+"01");
La date d'hier dans quel format? En tant qu'objet de calendrier? Comme une chaîne? En tant que util.Date? En tant que sql.Date? – Stephen