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

ASP.NET Discussion :

Format Date selon localisation.


Sujet :

ASP.NET

  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut Format Date selon localisation.
    Bonjour à tous,

    je teste actuellement mon appli et je viens de découvrir un bug qu je ne parviens pas à corriger.
    Lorsque je fais une requete d'affichage depuis ma BDD en selectionnant une date, je teste cette date de cette maniere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                            If CStr(MyReader(5)) = "01/01/1900" Then
                                TxtDateFin.Text = String.Empty
                            Else
                                TxtDateFin.Text = CStr(MyReader(5))
                            End If
    BARBARE me direz-vous et vous aurez raison, mais si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      If CStr(MyReader(5)) = "NULL" Then OU cstr(myreader.IsBDNull(5))
                                TxtDateFin.Text = String.Empty
                            Else
                                TxtDateFin.Text = CStr(MyReader(5))
                            End If
    il me sort des erreurs de conversions ou m'affiche 01/01/1900

    Sauf que je viens de tester mon appli localisée en anglais et que dans ce cas, la date n'est plus 01/01/1900 mais 1/1/1900. Avec mon test, j'affiche donc 1/1/1900 en anglais, or je voudrais que le textbox soit vide.

    La question est surement stupide mais je suis paumé.

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    D'abord il n'y a pas de question stupide. Il est stupide de ne pas poser de questions.
    Ensuite, je te conseille de comparer ce qui est comparable. Visiblement, MyReader(5) est un DateTime, non ? Alors pourquoi le convertir en String sans même maîtriser le format cible ? Pourquoi ne pas comparer avec une date ? Tu construits un DateTime au 01/01/1900 et tu compares les deux. Ainsi, tu n'as pas de problème de format.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Citation Envoyé par BCmDev
    D'abord il n'y a pas de question stupide. Il est stupide de ne pas poser de questions.
    Ensuite, je te conseille de comparer ce qui est comparable. Visiblement, MyReader(5) est un DateTime, non ? Alors pourquoi le convertir en String sans même maîtriser le format cible ? Pourquoi ne pas comparer avec une date ? Tu construits un DateTime au 01/01/1900 et tu compares les deux. Ainsi, tu n'as pas de problème de format.
    Je suis d'accord avec toi, mais si je convertie la date en string et que je compare à une chaine de caracteres c'est parce que MSSQL renvoie systématiquement 01/01/1900 pour une date NULL.
    Je ne peux pas faire mon test sur dbnull.Value, cela ne fonctionne pas.

    Mon reader(5) n'est jamais vide, et j'affiche toujours 01/01/1900 si je ne teste pas sur cette chaine de caracteres.
    La methode est idiote, il en existe forcément une autre, mais je ne la trouve pas.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Ok, MySql renvoie 01/01/1900, mais dans un type DateTime, non ? Il ne renvoie tout de même pas un String dans le cas DbNull. Tu peux alors comparer ta date avec un new DateTime(1900, 01, 01).

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    je pense qu'il renvoie bien un datetime et pas une string.
    MAIS, avec l'option strict, si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myreader(5)=1 / 1 / 1900
    j'obtiens une erreur de syntaxe
    et si je remplace = par IS, c'est de même

    le plus simple serait evidemment que, comme pour les autres types on puisse utiliser le dbnull.Value, mais ici cela ne fonctionne pas.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par calagan99
    je pense qu'il renvoie bien un datetime et pas une string.
    MAIS, avec l'option strict, si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myreader(5)=1 / 1 / 1900
    j'obtiens une erreur de syntaxe
    et si je remplace = par IS, c'est de même
    Alors au lieu de tester avec 1/1/1900, tu n'as qu'à tester avec un DateTime initialisé à 01/01/1900 (comme l'a dit BCmDev).

  7. #7
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim dateFin As New DateTime(1900, 1, 1)
                            If cdate(MyReader(5)) = dateFin Then
                                TxtDateFin.Text = String.Empty
                            Else
                                TxtDateFin.Text = CStr(MyReader(5))
                            End If
    produit:
    Option Strict On n'autorise pas les opérandes de types Object pour l'opérateur '=', Utilisez l'opérateur "Is" pour tester l'identité de l'objet
    EDIT: JE SUIS UN ANE. Je dois d'abord transtyper mon READER et ce sera bon
    BINGO, cdate sur le reader et ca fonctionne.

    Merci beaucoup, je crois que j'aurais cherché longtemps avant de comparer avec un datetime initilisé...
    merci encore

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu as essayé avec MyReader.GetDateTime(5) à la place de MyReader(5) ?

  9. #9
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    NON, et a vrai dire je ne savais pas que le reader avait toutes ces propriétés.
    Je me contentais d'utiliser myreader.isdbnull(i) a l'occasion mais sans avoir jamais fait attention au reste.
    Merci beaucoup SaumonAgile, tu viens de m'apprendre quelquechose qui va énrorment me servir.

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

Discussions similaires

  1. [XL-2003] Changement format date selon ouverture manuel ou macro
    Par jguenot dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/04/2017, 11h42
  2. bean write format date non traduit selon la locale
    Par jamesleouf dans le forum Struts 1
    Réponses: 0
    Dernier message: 26/10/2010, 16h59
  3. Réponses: 6
    Dernier message: 22/10/2010, 20h59
  4. Change le format de date selon l'OS
    Par Ohemeg dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 25/02/2008, 15h02
  5. [VBA-E] Gestion des dates selon format de départ
    Par Gamal le Celte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/02/2007, 14h41

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