Date_parse

Fermé
laurent2403 Messages postés 80 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 23 février 2020 - 29 juin 2013 à 09:15
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 29 juin 2013 à 11:38
bonjour tout le monde

j'ai une fonction qui me retourne une date sous un format qui ne m'interesse pas trop , j'aimerais pouvoir parser son resultat sous forme d'une date de type "yyyy/MM/dd" je n'y arrive pas si quelqu'un pouvait m'aider ce serais cool , merci d'avance .

voici ma fonction

public class TestDate {


public static Date deplacerDate(Date dateDepartRef,int nb_jour_deplacer){
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateDepartRef);
Calendar calendar2 = Calendar.getInstance();
calendar2.clear();
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)-1);
calendar2.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)+nb_jour_deplacer);


return calendar2.getTime();
}


ca me retourne cela : Thu Jun 20 00:00:00 SBT 2002

j'aimerais plutot ceci : 2002/06/20

3 réponses

gohlink Messages postés 50 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 16 décembre 2015 12
29 juin 2013 à 09:26
Bonjour,

Il faut passer par la classe SimpleDateFormat

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
0
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
Modifié par tksteph le 29/06/2013 à 10:05
tu remplaces ta dernière instruction par ceci , et tu change le type de retour de ta méthode en String

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        return sdf.format(calendar2.getTime());


Si tu veux être le meilleur, il faut que tu battes le meilleur!
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 juin 2013 à 11:38
Pour moi le problème ne vient pas de la méthode deplacerDate, elle renvoie un objet Date, ce qui est tout à fait correct, il n'y a pas de raison de modifier le résultat.

Si tu obtiens "Thu Jun 20 00:00:00 SBT 2002" c'est parce qu'ensuite tu essayes d'afficher cette date, ce n'est donc qu'un simple problème d'affichage, il serait donc plus correct de modifier ton affichage plutôt que le résultat de la méthode.

Par exemple, en utilisant System.out.printf (voir la documentation de Formatter)

Date date = deplacerDate(dateDepartRef, nb_jour_deplacer);

System.out.printf("%tF",date); // ISO 8601 : "AAAA-MM-JJ"
System.out.println();
System.out.printf("%1$tY/%1$tm/%1$td",date); // "AAAA/MM/JJ"

Remarque : la classe GregorianCalendar permet de simplifier tes calculs de date.

public static Date deplacerDate(Date dateDepartRef, int nb_jour_deplacer)
{
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(dateDepartRef);
    calendar.add(GregorianCalendar.DAY_OF_YEAR, nb_jour_deplacer);
    return calendar.getTime();
}
0