Vous pourriez utiliser le add
et lui transmettre un nombre négatif. Cependant, vous pouvez également écrire une méthode plus simple qui n'utilise pas la méthode Calendar
telle que la suivante
public static void addDays(Date d, int days)
{
d.setTime( d.getTime() + (long)days*1000*60*60*24 );
}
Elle obtient la valeur de l'horodatage de la date (millisecondes depuis l'époque) et ajoute le nombre approprié de millisecondes. Vous pourriez passer un nombre entier négatif pour le paramètre days afin d'effectuer une soustraction. Ce serait plus simple que la solution du calendrier "correct" :
public static void addDays(Date d, int days)
{
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, days);
d.setTime( c.getTime().getTime() );
}
Notez que ces deux solutions modifient le Date
passé en tant que paramètre plutôt que de retourner un nouvel objet Date
. L'une ou l'autre de ces fonctions pourrait être facilement modifiée pour faire l'inverse si vous le souhaitez.
0 votes
Pour votre information, les anciennes classes de date-heure gênantes telles que
java.util.Calendar
sont maintenant héritage supprimé par le java.time classes. Voir Tutoriel par Oracle .