IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Problème format Date


Sujet :

Développement Web en Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut Problème format Date
    Bonjour,

    j'ai un soucis de formatage de date, j'aimerais avoir pour retour, un format suivant : jj/mm/aaaa 00:00:00. Tels que c'est stocké dans ma base de donnée en Date TIME.
    Pouvez vous m'aider ?

    Seconde question : comment je peux faire dans ma jsp pour verifier que le premier champ : dateDebutComparaison et bien Inférieur à dateFinComparaison. (dateDebut et dateFin sont des champs de saisi afin de pouvoir faire un comparaison qui, elle se fait dans ma requête mysql) .

    J'ai fait cette methode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private static Date getValeurChampDate( HttpServletRequest request, String nomChamp ) throws ParseException {
    		String valeur = request.getParameter( nomChamp );
    		DateFormat formater = DateFormat.getDateInstance(DateFormat.SHORT,Locale.FRANCE);
     
    		Date date = formater.parse(valeur);
    		if ( valeur == null || valeur.trim().length() == 0 ) {
    			return null;
    		} else {
     
    			System.out.println("date retournée : "+date);
    			return date;
    		}
    	}
    et j'obtiens par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    date retournée : Thu May 02 00:00:00 CEST 2013
    date retournée : Sat May 04 00:00:00 CEST 2013

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    Tu peux utiliser la classe SimpleDateFormat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    formater.format(valeur)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private static Date getValeurChampDate( HttpServletRequest request, String nomChamp ) throws ParseException {
    	String dateString = request.getParameter( nomChamp );
            SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRANCE);
     
            Date dateConvertie;
            if (valeur != null && valeur.trim().length() != 0)
            {
                    dateConvertie = sdf.parse(dateString);
            }
            else
            {
                dateConvertie = null;
            }
     
            return dateConvertie;
        }
    Le tient était assez exotique... Tu formates la date, puis tu vérifies ensuite si le String d'origine est null ou vide... Pour améliorer ça il faudrait que tu gardes en mémoire l'instance de "dateFormatter" car c'est dommage de reconstruire le formateur à chaque fois...

    Seconde question : comment je peux faire dans ma jsp pour verifier que le premier champ : dateDebutComparaison et bien Inférieur à dateFinComparaison. (dateDebut et dateFin sont des champs de saisi afin de pouvoir faire un comparaison qui, elle se fait dans ma requête mysql) .
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateDebutComparaison.before(dateFinComparaison)
    Romain.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    Merci les gars.

    J'ai une erreur avec ton code romain, j'ai peut etre fait encore une bourde...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    java.text.ParseException: Unparseable date: "02/05/2013"
    connection établie base SQL
    	at java.text.DateFormat.parse(DateFormat.java:354)
    	at org.omega.forms.RechercheMaterielForm.getValeurChampDate(RechercheMaterielForm.java:188)
    	at org.omega.forms.RechercheMaterielForm.rechercheListMateriels(RechercheMaterielForm.java:81)
    	at org.omega.servlets.AfficheMateriels.doPost(AfficheMateriels.java:76)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.omega.filters.RestrictionFilter.doFilter(RestrictionFilter.java:47)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at java.lang.Thread.run(Thread.java:679)
    Voici le code en fonction de ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	private static Date getValeurChampDate( HttpServletRequest request, String nomChamp ) throws ParseException {
    		String dateString = request.getParameter( nomChamp );
    		SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRANCE);
     
    		Date dateConvertie;
    		if (dateString != null && dateString.trim().length() != 0)
    		{
    			dateConvertie = dateFormatter.parse(dateString);
    		}
    		else
    		{
    			dateConvertie = null;
    		}
    		System.out.println("date retournée : "+dateConvertie);
    		return dateConvertie;
    	}

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    private static Date getValeurChampDate( HttpServletRequest request, String nomChamp ) throws ParseException {
    		String dateString = request.getParameter( nomChamp );
    		SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE);
     
    		Date dateConvertie;
    		if (dateString != null && dateString.trim().length() != 0)
    		{
    			dateConvertie = dateFormatter.parse(dateString);
    		}
    		else
    		{
    			dateConvertie = null;
    		}
    		System.out.println("date retournée : "+dateConvertie);
    		return dateConvertie;
    	}
    Le format que tu mets dans le simpledateformat doit correspondre au format du string saisie dans ton formulaire.

    Romain.

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    Quand on a affaire à de telles conversions sensibles, le mieux c'est de protéger son code par un try catch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    /**
             * Parse une date en fonction du format passé en paramètre
             * 
             * @param dateToParse :Date en Chaine
             * @param dateFormat   : format de la date vers laquelle parser
             *          
             * @return
             */
    	public static Date parseDate(String dateToParse, String dateFormat) {
    		SimpleDateFormat df = new SimpleDateFormat(dateFormat);
    		Date dateParse = null;
    		try {
    			dateParse = df.parse(dateToParse);
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();// Ou return null
    		}
    		return dateParse;
    	}
    Et pour la comparaison des Dates, tu peux la faire côté client en Javascript, qui comprend tout à fait l'opérateur de comparaison (<, >,<=,etc...)
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    Pourquoi ne mets-tu pas l'instanciation de ton objet dateFormatter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRANCE);
    dans la méthode "init" de ta servlet?

    Il serait créé une seule fois, alors que là, tu le recrées à chaque appel de ta méthode.

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    Quand je fais ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    private static Date getValeurChampDate( HttpServletRequest request, String nomChamp ) throws ParseException {
    		String dateString = request.getParameter( nomChamp );
    		SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy", Locale.FRANCE);
     
    		Date dateConvertie;
    		if (dateString != null && dateString.trim().length() != 0)
    		{
    			dateConvertie = dateFormatter.parse(dateString);
    		}
    		else
    		{
    			dateConvertie = null;
    		}
    		System.out.println("date retournée : "+dateConvertie);
    		return dateConvertie;
    	}
    J'obtiens ça en console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    date retournée : Thu May 02 00:00:00 CEST 2013
    date retournée : Sat May 11 00:00:00 CEST 2013
    et ça dans le navigateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Etat HTTP 500 - com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la conversion d'une valeur datetime à partir d'une chaîne de caractères.

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    ta raison plawyx, c'est ce que j'ai fait pour mes connexions a mes bases de données, j'ai modifié le cycle de vie de ma servLet mais en revanche là ça parse pas

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Tu confonds plusieurs choses là... Ce que tu logs dans ta console c'est un objet Date, et non pas le String qui sera envoyé à la base de données...

    Cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Etat HTTP 500 - com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la conversion d'une valeur datetime à partir d'une chaîne de caractères.
    N'a rien à voir avec le parser que tu as écris dans ta servlet... Est-ce que tu peux nous montrer comment tu effectues ta requête SQL avec la base de données ? Car ton erreur se situe à ce niveau là, et non dans ta servlet.

    Romain.

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String	SQL_SELECT_MATERIEL = "SELECT * FROM MATERIEL WHERE 1=1 ";
    et je concataine en fonction des champs remplit sur le formulaire. donc si il y a les dates saisies cela est concaténé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	if(debProchaineVP != null && finProchaineRP != null){
    					SQL_SELECT_MATERIEL = SQL_SELECT_MATERIEL.concat("AND DATE_PROCH_VP >= '"+debProchaineVP+"' AND DATE_PROCH_VP <= '"+finProchaineRP+"' OR DATE_PROCH_RP >= '"+debProchaineVP+"' AND DATE_PROCH_RP <= '"+finProchaineRP+"' OR DATE_PROCH_VI >= '"+debProchaineVP+"' AND DATE_PROCH_VI <= '"+finProchaineRP+"'");
    					System.out.println("SQLcat8 : "+SQL_SELECT_MATERIEL);
    				}
    Voici ce que j'obtiens en console ça sera plus claire je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    contenu prochaineVP Thu May 02 00:00:00 CEST 2013
    g selectionné une date RP !
    contenu prochaineRP Fri May 17 00:00:00 CEST 2013
    connection établie base SQL
    SQLcat8 : SELECT * FROM MATERIEL WHERE 1=1 AND DATE_PROCH_VP >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_VP <= 'Fri May 17 00:00:00 CEST 2013' OR DATE_PROCH_RP >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_RP <= 'Fri May 17 00:00:00 CEST 2013' OR DATE_PROCH_VI >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_VI <= 'Fri May 17 00:00:00 CEST 2013'
    execution de la requete SELECT * FROM MATERIEL WHERE 1=1 AND DATE_PROCH_VP >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_VP <= 'Fri May 17 00:00:00 CEST 2013' OR DATE_PROCH_RP >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_RP <= 'Fri May 17 00:00:00 CEST 2013' OR DATE_PROCH_VI >= 'Thu May 02 00:00:00 CEST 2013' AND DATE_PROCH_VI <= 'Fri May 17 00:00:00 CEST 2013'
    erreur dans la requete !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Ton problème est que tu concatènes des objet Date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL_SELECT_MATERIEL = SQL_SELECT_MATERIEL.concat("AND DATE_PROCH_VP >= '"+debProchaineVP+"' AND DATE_PROCH_VP <= '"+finProchaineRP+"' OR DATE_PROCH_RP >= '"+debProchaineVP+"' AND DATE_PROCH_RP <= '"+finProchaineRP+"' OR DATE_PROCH_VI >= '"+debProchaineVP+"' AND DATE_PROCH_VI <= '"+finProchaineRP+"'");
    ça appelle la méthode toString de la classe Date sur tes objets debProchaineVP, debProchaineVP, ... Sauf que ce n'est pas correcte de faire comme ça, car la méthode Date.toString() ne formate pas la date comme elle est attendue dans la base de données.

    Voilà une méthode qui te permettra de formater tes dates correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private static String toStringSQL(Date date, String format)
        {
            String dateString = null;
     
            if (date != null)
            {
                SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRANCE);
                dateString = formater.format(date);
            }
     
            return dateString;
        }
    Puis ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL_SELECT_MATERIEL = SQL_SELECT_MATERIEL.concat("AND DATE_PROCH_VP >= '"+toStringSQL(debProchaineVP)+"' AND DATE_PROCH_VP <= '"+toStringSQL(finProchaineRP)+"' OR DATE_PROCH_RP >= '"+toStringSQL(debProchaineVP)+"' AND DATE_PROCH_RP <= '"+toStringSQL(finProchaineRP)+"' OR DATE_PROCH_VI >= '"+toStringSQL(debProchaineVP)+"' AND DATE_PROCH_VI <= '"+toStringSQL((finProchaineRP)+"'");
    ça devrait marcher, mais ça reste quand même pas joli joli comme façon de procéder. Cherche à te renseigner du coté des PreparedStatement... : http://java.developpez.com/faq/jdbc/...paredstatement

    Romain.

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par plawyx Voir le message
    Pourquoi ne mets-tu pas l'instanciation de ton objet dateFormatter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.FRANCE);
    dans la méthode "init" de ta servlet?

    Il serait créé une seule fois, alors que là, tu le recrées à chaque appel de ta méthode.
    Mauvaise idée.

    Les DateFormat ne sont pas thread-safe, et l'utilisation typique de servlets, c'est que plein de requêtes peuvent arriver en même temps et s'exécuter en parallèle dans des threads différents.
    Recréer le DateFormat à chaque requête est la solution couramment acceptée, parce qu'elle est simple, et que ce n'est rien face au moteur de JSP qui se met en branle, et toutes les IOs de la requête.
    D'autres solutions :
    - Stocker le DateFormat dans ThreadLocal, et n'en créer un nouveau que si le thread courant n'en avait pas déjà. Ça résout bien le problème, mais c'est s'embêter et compliquer le code sans raison valable.
    - Créer sa propre implémentation de DateFormat et s'arranger pour qu'elle soit thread-safe. Ça peut se justifier dans certains cas où l'instanciation à outrance de DateFormat crée de vrais ralentissements, mais pas dans le cas ici présent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    Bonjour et merci pour vos réponses. Bon en analysant mes possibilités, est ce que cela serait une erreur? Si je récupère mes champs formulaire en string (12/01/2013). Et que je mets cela dans ma requête sql mais en faisant un cast dans ma requête en elle même ? Genre cast (monChamp AS datetime) ? En utilisant between je pourrais faire une comparaison sans problème non ? Comme ça mon format date est bien dd/MM/yyyy sans avoir à s'embêter. Vous en pensez quoi

  15. #15
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Je confirme ce que dit thelvin sur le problème "Thread Safe" de SimpleDateFormat.

    Ce petit article illustre parfaitement le problème et les solutions à apporter :
    http://www.java-freelance.fr/java/co...mpledateformat
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Une remarque quand même. Le meilleur moyen de pas s'emmerder avec les dates dans les base de données (et accessoirement de ne pas avoir un code qui explose lors de la mise en prod car la base de donnée de prod utiliserais un format différent...), c'est quand même de passer par des requêtes paramétrée et la méthode PreparedStatement.setParameter(int, java.util.Date), ce qui accessoirement evite aussi les injection sql joyeuses qu'on se prend en concaténant comme un bourrin :s

  17. #17
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 277
    Points : 126
    Points
    126
    Par défaut
    Ok les amis, donc je vais
    passer par requête préparée merci encore pour vos conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème format date
    Par benjisan dans le forum Modélisation
    Réponses: 3
    Dernier message: 17/07/2008, 09h24
  2. Problème Format date
    Par Jiyuu dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/08/2007, 16h52
  3. problème format date dans un datagrid
    Par bebert119 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 14/08/2007, 15h38
  4. Problème format Date avec VS2003
    Par vaohdan dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/05/2007, 12h06
  5. Problème format date - SimpleDateFormat inversion mois/jour
    Par juanqui dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/02/2007, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo