Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
764 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Format de date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Format de date

n°486203
Tetranos
Posté le 13-08-2003 à 18:02:59  profilanswer
 

Bonjour,
 
voilà j'ai un petit problème avec les dates. J'utilise dans une page JSP les deux lignes suivantes :
 
Locale iLoc = request.getLocale();
DateFormat iDf = DateFormat.getDateInstance(DateFormat.SHORT,iLoc);
 
J'obtiens le plus souvent avec ces lignes une locale françaises et donc le format de date suivant : JJ/MM/AA or, je préférerai avoir les dates formater avec quatres chiffres pour l'année --> JJ/MM/AAAA
 
Comment puis-je m'y prendre ?

mood
Publicité
Posté le 13-08-2003 à 18:02:59  profilanswer
 

n°486651
the real m​oins moins
Posté le 14-08-2003 à 02:00:41  profilanswer
 

tu prend un autre DateFormat que le .SHORT ou bien t'utilises SimpleDateFormat, mais dans ce cas tu oublies la locale :/
 
sinon tu peux redefinir ton format pour toutes les locales [:chacal_one333]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°486769
darklord
You're welcome
Posté le 14-08-2003 à 09:02:29  profilanswer
 

the real moins moins a écrit :


sinon tu peux redefinir ton format pour toutes les locales [:chacal_one333]


 
:/


---------------
Just because you feel good does not make you right
n°486837
Tetranos
Posté le 14-08-2003 à 09:49:56  profilanswer
 

Bon j'ai opté pour le SimpleDateFormat, et j'ai donc
 
DateFormat iDf = new SimpleDateFormat(TConstant.szDATEFORMAT);
 
où TConstant.szDATEFORMAT = "dd/MM/yyyy"
 
(désolé pour les conventions des noms de variables et autres, mais je dois respecté une norme interne à l'entreprise)
 
et donc, maintenant, je voudrait être sur que l'utilisateur saisissent bien une date avec ce format, et éviter les saisies du type dd/MM/yy, que l'utilisateur semble toujours pouvoir faire malgré ce format...

n°486847
darklord
You're welcome
Posté le 14-08-2003 à 10:00:40  profilanswer
 

1/ Tu as conscience que tu n'as plus aucune dépandance avec la locale du client (en d'autres termes le format sera toujours jj/mm/AAAA)
 
2/ Pour vérifier que le format est correct, il te suffit de parser l'input du client et catcher une éventuelle java.text.ParseException (c'est une exception un peu spéciale qui te donne l'offset où l'erreur à lieu dans la string que tu lui passes en paramètre


---------------
Just because you feel good does not make you right
n°486876
Tetranos
Posté le 14-08-2003 à 10:18:48  profilanswer
 

1/ Oui j'en ai conscience, mais il me suffit de faire (dans une evolution future), à la place d'une constante chaîne, un tableau de constante du genre
 
public final String[] tszDATEFORMAT = {"dd/MM/yyyy","MM/dd/yyyy"};
 
et en fonction de la locale de l'utilisateur, je prends la 1° ou la 2° valeurs de ce tableau
 
2/ et ben non... :(
 
DateFormat iDf = new SimpleDateFormat(TConstant.szDATEFORMAT);
(szDATEFORMAT = "dd/MM/yyyy" )
 
try
{
 iDf.parse(tszVal1[nCnt]);
}
catch (ParseException iExp)
{
 return "&errordate=" + tszCriIdx[nCnt];
}
 
où tszVal1[nCnt] = 02/02/02;
 
l'exception n'est pas lancer...

n°486882
darklord
You're welcome
Posté le 14-08-2003 à 10:23:26  profilanswer
 

effectivement. Le parse arrive à s'en sortir avec ce format là. 2 secondes je regarde


---------------
Just because you feel good does not make you right
n°486888
darklord
You're welcome
Posté le 14-08-2003 à 10:28:31  profilanswer
 

et c'est même pire :/
 

Citation :


/**
 *  
 *
 * @author     Stephane Nicoll
 * @author     $Author: snicoll $ (last edit)
 * @version    $Revision: 1.1 $
 */
public class DateTest {
 
 
 
    public static void testStrictParsing(String date) {
 
        String dateFormat = "dd/MM/yyyy";
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
            Date d = sdf.parse(date);
            System.out.println("Date parsed sucessfully ["+d+"]" );
        } catch (ParseException e) {
            System.out.println("Failed to parse date ["+date+"] at offset ["+e.getErrorOffset()+"]" );
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) {
        testStrictParsing("01/01/01" );
    }
 
}


 
ca me renvoie:
 

Citation :


Date parsed sucessfully [Sat Jan 01 00:00:00 CET 0001]
Process terminated with exit code 0


 
donc il prendr le 01/01/0001 [:totoz]


Message édité par darklord le 14-08-2003 à 10:29:15

---------------
Just because you feel good does not make you right
n°486894
liengy
Approuved !!!
Posté le 14-08-2003 à 10:33:30  profilanswer
 

Tetranos a écrit :

Bon j'ai opté pour le SimpleDateFormat, et j'ai donc
 
DateFormat iDf = new SimpleDateFormat(TConstant.szDATEFORMAT);
 
où TConstant.szDATEFORMAT = "dd/MM/yyyy"
 
(désolé pour les conventions des noms de variables et autres, mais je dois respecté une norme interne à l'entreprise)
 
et donc, maintenant, je voudrait être sur que l'utilisateur saisissent bien une date avec ce format, et éviter les saisies du type dd/MM/yy, que l'utilisateur semble toujours pouvoir faire malgré ce format...


C koi comme type d'appli ? soft ? web ? autres ?

n°486897
Tetranos
Posté le 14-08-2003 à 10:33:56  profilanswer
 

Ben, j'ai fait un truc un peu salle mais ça marche...
 
if (tszVal[nCnt].length() == TConstant.szDATEFORMAT.length())
{  
 try
 {
  iDf.parse(tszVal[nCnt]);
 }
 catch (ParseException iExp)
 {
  return "&errordate=" + tszFldIdx[nCnt];
 }
}
else
{
 return "&errordate=" + tszFldIdx[nCnt];
}
 
donc c'est bon... Merci quand même

mood
Publicité
Posté le 14-08-2003 à 10:33:56  profilanswer
 

n°486900
Tetranos
Posté le 14-08-2003 à 10:34:54  profilanswer
 

Pour info à Liengy
 
c'est du Web, page JSP...

n°486901
liengy
Approuved !!!
Posté le 14-08-2003 à 10:36:27  profilanswer
 

Tetranos a écrit :

Pour info à Liengy
 
c'est du Web, page JSP...

Alors pkoi tu te contentes pas d'un controle javascript ?

n°486903
Krueger
tout salaire demande dutravail
Posté le 14-08-2003 à 10:37:17  profilanswer
 

Rien n'empêche le client de désactiver le Javascript...


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°486904
darklord
You're welcome
Posté le 14-08-2003 à 10:38:54  profilanswer
 

j'allais te proposer de vérifier la taille de la chaine (10 caractères et pas 8 dans le cas d'une année en yy). Mais bon je suppose que c'est ce que ton code fait ;)
 
Pour info si tu veux du parsing strict tu peux faire setLenient(false).
 
Ca évites des cas du genre
 
01/13/2002 -> 01/01/2003 (le 13eme mois shift et augmente l'année de 1).


---------------
Just because you feel good does not make you right
n°486918
Tetranos
Posté le 14-08-2003 à 10:53:50  profilanswer
 

ok merci du tuyau

n°486929
Tetranos
Posté le 14-08-2003 à 11:04:48  profilanswer
 

Au fait, pourquoi pas de JavaScript...
 
En cas d'erreur de date, je rajoute en haut de la page un message :
Les dates doivent être saisies sous le format suivant : 14/08/2003
 
plus, je change la couleur du libellé du champ qui fait l'erreur...Et faire ça en JS, c'est un poil chaud, surtout quand on veut être compatible avec plusieurs navigateurs... :pt1cable:

n°487048
the real m​oins moins
Posté le 14-08-2003 à 12:09:17  profilanswer
 

Tetranos a écrit :


tszVal
nCnt
iDf
iExp
tszFldIdx

[:totoz]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°487056
Krueger
tout salaire demande dutravail
Posté le 14-08-2003 à 12:15:43  profilanswer
 


:non:

Tetranos a écrit :

désolé pour les conventions des noms de variables et autres, mais je dois respecté une norme interne à l'entreprise


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°487060
the real m​oins moins
Posté le 14-08-2003 à 12:19:22  profilanswer
 

bah c'est pas une raison, c'est totozifiant quand meme :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°487063
Krueger
tout salaire demande dutravail
Posté le 14-08-2003 à 12:22:54  profilanswer
 

C'est vrai, mais bon, il n'a pas le choix. :/ Au moins il y a une convention de codage.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°487083
the real m​oins moins
Posté le 14-08-2003 à 12:56:37  profilanswer
 

Krueger a écrit :

C'est vrai, mais bon, il n'a pas le choix. :/ Au moins il y a une convention de codage.

euh ouais euh ....
http://java.sun.com/docs/codeconv/ [...] C.doc.html
 
:o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°487147
Krueger
tout salaire demande dutravail
Posté le 14-08-2003 à 14:12:02  profilanswer
 

Ben c'est une convention comme une autre, même si c'est celle recommandée à tous. Après tout l'important est de garder le style de codage uniforme pour les développeurs de sa boîte. Sinon il est mieux placé que moi pour l'expliquer.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°487183
Tetranos
Posté le 14-08-2003 à 14:29:22  profilanswer
 

Effectivement, j'utilise cette convention car je suis le seul de l'entreprise en coder en Java (chui stagière en fait). Les devellopeurs d'ici code pour la plupart en Delphi...
 
Précisions
 
sz : une chaîne
t: un tableau
--> tsz : un tableau de chaine
n : un entier
i : une instance de classe (forcément en Java tout est classe :) )
 
allez pour voir ce qui suivent : un tableau d'entier ?
 :sol:

n°487189
darklord
You're welcome
Posté le 14-08-2003 à 14:32:48  profilanswer
 

Tetranos a écrit :

E
allez pour voir ce qui suivent : un tableau d'entier ?
 :sol:  


 
[:vomi] ?


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Format de date

 

Sujets relatifs
Problème de conversion de format de date....[Résolu] Date du jour au format dd/mm/yyyy en java ?? débutant inside
Forcer la saisie d'une date au format jj/mm/aaaa dans une textbox[Java] Valider le format d'une date ? Bug avec SimpleDateFormat ?
Date au format AAQQQ (quantième)[ASP] Forcer une variable en format date?
[Java] Format de Date - resolu - soltion inside[Delphi] Conversion date du format Unix vers format Windows
[MySQL] - Personnaliser le format de la date/heure dans une table?[SQL] Pb avec un format date...
Plus de sujets relatifs à : Format de date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR