Je travaille avec une date dans ce format : yyyy-mm-dd
.
Comment puis-je incrémenter cette date d'un jour ?
Je travaille avec une date dans ce format : yyyy-mm-dd
.
Comment puis-je incrémenter cette date d'un jour ?
Quelque chose comme ça devrait faire l'affaire :
String dt = "2008-01-01"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1); // number of days to add
dt = sdf.format(c.getTime()); // dt is now the new date
MISE À JOUR (mai 2021) : Il s'agit d'une réponse vraiment dépassée pour un vieux, vieux Java. Pour Java 8 et plus, voir https://stackoverflow.com/a/20906602/314283
Java semble bien en retard par rapport à C#. Cette méthode utilitaire montre la façon de faire dans Java SE 6 en utilisant la fonction Méthode Calendar.add (vraisemblablement le seul moyen facile).
public class DateUtil
{
public static Date addDays(Date date, int days)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days); //minus number would decrement the days
return cal.getTime();
}
}
Pour ajouter un jour, selon la question posée, appelez-le comme suit :
String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
Pour information, les anciennes classes de date et d'heure terriblement gênantes telles que java.util.Date
, java.util.Calendar
y java.text.SimpleDateFormat
sont maintenant héritage supprimé par le java.time intégrées à Java 8 et aux versions ultérieures. Voir Tutoriel par Oracle .
Je préfère utiliser DateUtils d'Apache. Vérifiez ceci http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . C'est pratique surtout lorsque vous devez l'utiliser à plusieurs endroits dans votre projet et que vous ne voulez pas écrire votre méthode unique pour cela.
L'API dit :
addDays(Date date date, int amount) : Ajoute un nombre de jours à une date en retournant un nouvel objet.
Notez qu'elle renvoie un nouvel objet Date et n'apporte pas de modifications à l'objet précédent lui-même.
Jetez un coup d'œil à Joda-Time ( https://www.joda.org/joda-time/ ).
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
Vous pouvez supprimer les appels à l'analyseur syntaxique pour construire le DateTime. Utilisez DateTime date = new DateTime(dateString) ; Ensuite, nextDay est ISODateTimeFormat.date().print(date.plusDays(1)) ; Voir joda-time.sourceforge.net/api-release/org/joda/time/ pour plus d'informations.
Pour un exemple de code plus détaillé utilisant Joda-Time, voir ma réponse à une question similaire, Comment ajouter un jour à une date ? .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
11 votes
Si vous utilisez Java 8 ou une version plus récente, vous pouvez utiliser la nouvelle interface utilisateur date/heure. Voir cette réponse : stackoverflow.com/a/23910924/1115554
5 votes
Nouveau DateTime().plusDays(1).toDate() ? ???