Java - Date

Fermé
Towers - 22 mai 2008 à 12:00
 Utilisateur anonyme - 23 mai 2008 à 06:58
Bonjour,

Je fais, ou plutôt j'essaye de faire une petite appli java (avec des servlet)
En gros tout marche sauf que je n'arrive pas à extraire le jour, le mois et l'année d'une date.

En gros je stocke la date (type :
Date laDate
) dans la session.
Je récupère la date en faisant un getAttribute, donc ça pas de problèmes, si je veux je peux l'afficher grâce à SimpleDateFormat.

Le problème : je n'arrive pas à extraire le jour, mois et année au format numérique (short, int, ou autre). J'ai essayé d'utilisé les méthodes getmonth, getDay, etc... mais 2 problèmes se posent à moi : premièrement elles sont depreciated donc c'est moche de les utiliser. deuxièmement : le résultat renvoyé n'est pas le bon. Je suis sûr que la date enregistrée est la bonne puisque l'affichage par SimpleDateFormat est le bon, en revanche les méthodes getTruc ne renvoient jamais le bon résultat (toujours erroné et variable d'une fois sur l'autre).

Comment faire pour extraire ces nombres ?

C'est pas grave si je suis obligé de passer par une variable intermédiaire mais j'ai écumé tous les forums que j'ai pu et j'ai pas trouvé de solution.

Merci d'avance à la personne qui m'aidera.
A voir également:

2 réponses

Utilisateur anonyme
23 mai 2008 à 06:58
Salut,

Vois si tu trouves ce qu'il te manque dans cette petite source ecrite en vitesse:

import java.util.GregorianCalendar;
import java.util.Date;
import java.lang.String;
import java.util.*;


public class MesReponsesCCM

{
static String ladate;
static int jj,mm,aaaa;
static String mano = "";

public static void main(String args[])
{
// Supposons doc que ladate doit etre sous la forme jj/mm/aaaa ex. "22/05/2008"
// et nous controlerons la presence au bon endroit des 2 "/" :
ladate = "22/05/2008";

int ind = ladate.indexOf("/");
if (ladate.length() != 10)
{
System.out.println("Longueur de ladate incorrecte");
return; // voir que faire
}
if (ind == -1)
{
System.out.println("il n'y a pas de /");
return; // voir que faire
}
else
if (ind != 2)
{
System.out.println("il n'y a pas de / entre jour et mois");
return; // voir que faire
}
ind = ladate.lastIndexOf("/");
if (ind != 5)
{
System.out.println("il n'y a pas de / entre mois et annee");
return; // voir que faire
}

// "extraction" du jour:

mano = ladate.substring(0,2);
try
{
jj = Integer.parseInt(mano); // si jj non num. >>> exception
}

catch (NumberFormatException f)

{
System.out.println("jj non numerique " + mano);
return; // voir que faire
}

System.out.println("jj = " + jj);

// "extraction" du mois:

mano = ladate.substring(3,5);
try
{
mm = Integer.parseInt(mano); // si mm non num. >>> exception
}

catch (NumberFormatException f)

{
System.out.println("mm non numerique " + mano);
return; // voir que faire
}

System.out.println("mm = " + mm);

// "extraction" de l'annee:

mano = ladate.substring(6,10);
try
{
aaaa = Integer.parseInt(mano); // si aaaa non num. >>> exception
}

catch (NumberFormatException f)

{
System.out.println("mm non numerique " + mano);
return; // voir que faire
}

System.out.println("aaaa = " + aaaa);

// il manque encore quelques controles (longueur JJ et mm = 2, ainsi que les valeurs limites)
// l'ideal serait d'utiliser Calendar
}
}

cordialement,

Dan.
1
Utilisateur anonyme
22 mai 2008 à 19:54
Salut,

Peux-tu preciser d'ou vient cette date:

est-ce la date du jour, une date quelconque lue quelque part...

Si tu pouvais me donner le format de cette date ce serait bien.

Cordialement,

Dan.
0
la date en jeu a été lue et est en théorie fixe.

Au début j'ai des chaines de caractères issues d'un formulaire html.
Je les concatène avec les caractères intermédiaires correspondants et j'obtient une chaine de caractères au format date (exemple "22/05/2008" )
Ensuite si je me souviens de mon code, j'utilise parse() de SimpledateFormat pour transférer cette valeur dans ma variable date.

Et après c'est le drame pour extraire de cette date le jour, le mois et l'année en tant que nombres.
0