120 votes

Comment ajouter des minutes à ma date

J'ai cet objet de date:

 SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");
Date d1 = df.parse(interviewList.get(37).getTime());
 

la valeur de d1 est Fri Jan 07 17:40:00 PKT 2011

J'essaie maintenant d'ajouter 10 minutes à la date ci-dessus.

 Calendar cal = Calendar.getInstance();
cal.setTime(d1);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());
 

La valeur de newTime passe à 2011-50-07 17:50 mais elle devrait être 07-01-2011 17:50 .

Il ajoute les minutes correctement mais il change également de mois, je ne sais pas pourquoi!

203voto

Pangea Points 36713

Le problème pour vous est que vous utilisez mm . Vous devriez utiliser MM . MM est pour le mois et mm est pour les minutes. Essayez avec yyyy-MM-dd HH:mm

Autre approche:

Cela peut être aussi simple que cela (une autre option consiste à utiliser joda-time )

 static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs

long t=date.getTime();
Date afterAddingTenMins=new Date(t + (10 * ONE_MINUTE_IN_MILLIS));
 

33voto

jeznag Points 50

Méthode pratique pour implémenter la réponse de @ Pangea:

 /*
*  Convenience method to add a specified number of minutes to a Date object
*  From: http://stackoverflow.com/questions/9043981/how-to-add-minutes-to-my-date
*  @param  minutes  The number of minutes to add
*  @param  beforeTime  The time that will have minutes added to it
*  @return  A date object with the specified number of minutes added to it 
*/
private Date addMinutesToDate(int minutes, Date beforeTime){
    static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs

    long curTimeInMs = beforeTime.getTime();
    Date afterAddingMins = new Date(curTimeInMs + (minutes * ONE_MINUTE_IN_MILLIS));
    return afterAddingMins;
}
 

19voto

Dawood Points 1728

Ceci est incorrectement spécifié:

 SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");
 

Vous utilisez les minutes au lieu du mois (MM)

4voto

Baldrick Points 10927

Il y a une erreur dans le modèle de votre SimpleDateFormat. CA devrait etre

 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 

4voto

Kushan Points 2808

utiliser ce format,

 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 

mm pour les minutes et MM pour le mois

Prograide.com

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.

Powered by:

X