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

C# Discussion :

DateTime comportement très étrange


Sujet :

C#

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut DateTime comportement très étrange
    Bonjour

    J'ai 2 projets différents, ouverts dans 2 visual studio différents.

    Dans chacuns des 2, j'ai le code suivant:

    string date = "2013-11-25";
    string pattern = "yyyy-MM-dd";
    DateTime parsedDate;
    DateTime.TryParseExact(date, pattern, null, DateTimeStyles.None, out parsedDate);
    Console.WriteLine("=> " + parsedDate.ToString());
    Le résultat de l'un est (OK, c'est le résultat que je veux):

    => 25/11/2013 00:00:00

    Tandis que le résultat de l'autre est:

    => 11/25/2013 12:00:00 AM


    Il semblerait que pour une raison quelconque, le format que j'indique pour la date ne soit pas pris en compte.
    Je ne pense pas que cela soit un problème de programation mais plus de configuration de projet ou quelque chose du genre.

    Quelqu'un aurait il une piste pour résoudre ce problème?

    merci

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Bonjour,

    c'est bizarre, mais tu n'indiques aucun format pour le tostring. D'où la différence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string date = "2013-11-25";
    string pattern = "yyyy-MM-dd";
    DateTime parsedDate;
    DateTime.TryParseExact(date, pattern, null, DateTimeStyles.None, out parsedDate);
    Console.WriteLine("=> " + parsedDate.ToString("dd/MM/yyyy hh:mm:ss"));
    là, tu devrais avoir le même affichage.

    Bon dév

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Bonjour,

    Merci pour la réponse.

    Effectivement comme ceci, le résultat du writeline est le même. Cependant je dois faire la conversion vers String.

    En faisant debug du projet, dans le cas où tout est OK, le contenu de l'object DateTime a le format "dd-MM-yyyy"

    Mais en faisant le debugging dans l'autre projet, bien que le code soit le même, le contenu de l'objet DateTime a le format "MM-dd-yyyy"

    Et ensuite, à cause de cela, si je fais ToString() - sans paramètre - le résultat est différent...

    Moi, je veux récupérer l'objet DateTime pour être envoyé directement à une BD. Je ne voudrais pas passer par un objet String...

    Merci

    Citation Envoyé par sisqo60 Voir le message
    Bonjour,

    c'est bizarre, mais tu n'indiques aucun format pour le tostring. D'où la différence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string date = "2013-11-25";
    string pattern = "yyyy-MM-dd";
    DateTime parsedDate;
    DateTime.TryParseExact(date, pattern, null, DateTimeStyles.None, out parsedDate);
    Console.WriteLine("=> " + parsedDate.ToString("dd/MM/yyyy hh:mm:ss"));
    là, tu devrais avoir le même affichage.

    Bon dév

  4. #4
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Oui, il faut envoyer directement la date et non la représentation sous forme de chaîne.

    Il faut que tu saches que DateTime est une structure mémoire, tu vois son affichage en fonction de la culture de ton thread, mais les données contenues dans cette structure sont les mêmes quelle que soit ta culture.

    Je ne vois pas le problème pour envoyer une date en base de données.

    Une requête paramétrée avec un parametre de type date, .net sait gérer et le .net provider quel qu'il soit sait également gérer.

    Bon dév.

  5. #5
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par pjmorce Voir le message
    Moi, je veux récupérer l'objet DateTime pour être envoyé directement à une BD. Je ne voudrais pas passer par un objet String...
    Alors, une requête paramétrée ferait très bien l'affaire
    [Edit]grillé par sisqo60 [/Edit]

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Merci bien pour la réponse.

    Le problème est que lorsque j'envois mon object DateTime à la BD et que l'objet affiche le format MM-dd-yyyy (ex: 11/25/2013) , la BD me retourne une erreur car elle s'attend à une date avec le format dd-MM-yyyy (ex: 25/11/2013).

    Je ne sais pas comment résoudre ceci...

    Merci


    Citation Envoyé par callo Voir le message
    Alors, une requête paramétrée ferait très bien l'affaire
    [Edit]grillé par sisqo60 [/Edit]

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par pjmorce Voir le message
    En faisant debug du projet, dans le cas où tout est OK, le contenu de l'object DateTime a le format "dd-MM-yyyy"
    Un DateTime ne contient aucune information de formatage. C'est à toi de fournir celle-ci lors de l'utilisation de ToString.

    En l'absence de cette information c'est le format par défaut de la culture courante qui est utilisé. Ce que tu as observé c'est sans doute le débogage d'une appli dont la culture est en-US, puis le débogage d'une appli de culture fr-FR.

  8. #8
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Le plus simple est de nous fournir le code que tu utilises pour persister tes données en base.

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

Discussions similaires

  1. Comportement boucle WHILE très étrange
    Par czar1983 dans le forum C
    Réponses: 18
    Dernier message: 18/06/2013, 09h43
  2. [XL-2010] Comportement très étrange
    Par jpclabaux dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2012, 00h19
  3. Comportement très étrange pour CString
    Par squale32 dans le forum Visual C++
    Réponses: 15
    Dernier message: 15/05/2008, 11h55
  4. Probleme très étrange mais pourtant si simple ! (Alias)
    Par Artanis dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/05/2005, 19h56
  5. Problème très étrange...
    Par TitiFr dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/03/2005, 21h37

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