Question Comment puis-je incrémenter une date d'un jour en Java?


Je travaille avec une date dans ce format: yyyy-mm-dd.

Comment puis-je augmenter cette date d'un jour?


465
2018-01-09 17:20


origine


Réponses:


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

600
2018-01-09 17:33



Java semble être bien derrière la huit-ball par rapport à C #. Cette méthode utilitaire montre la façon de faire dans Java SE 6 en utilisant le Méthode Calendar.add (probablement 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, par 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);

173
2018-03-08 06:26



Je préfère utiliser DateUtils d'Apache. Vérifie ça http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html. C'est pratique surtout quand vous devez l'utiliser plusieurs fois dans votre projet et que vous ne voulez pas écrire votre méthode de doublure pour cela.

L'API dit:

addDays (Date date, int montant): Ajoute un nombre de jours à une date renvoyant un nouvel objet.

Notez qu'il renvoie un nouvel objet Date et ne modifie pas le précédent lui-même.


60
2017-08-13 12:33



java.time

Sur Java 8 et versions ultérieures, le package java.time rend cela à peu près automatique. (Didacticiel)

En supposant String entrée et sortie:

import java.time.LocalDate;

public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}

57
2018-01-03 15:08



SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );

53
2018-01-09 17:30



Construire un objet Calendar et utiliser la méthode add (Calendar.DATE, 1);


42
2018-01-09 17:27



Jetez un oeil à Joda-Time (http://joda-time.sourceforge.net/).

DateTimeFormatter parser = ISODateTimeFormat.date();

DateTime date = parser.parseDateTime(dateString);

String nextDay = parser.print(date.plusDays(1));

39
2018-01-09 18:13



Veuillez noter que cette ligne ajoute 24 heures:

d1.getTime() + 1 * 24 * 60 * 60 * 1000

mais cette ligne ajoute un jour

cal.add( Calendar.DATE, 1 );

Les jours avec un changement d'heure d'été (25 ou 23 heures), vous obtiendrez des résultats différents!


36
2017-12-02 14:37



Java 8 a ajouté une nouvelle API pour travailler avec les dates et les heures.

Avec Java 8, vous pouvez utiliser les lignes de code suivantes:

// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");

// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);

36
2018-05-28 11:53