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 :

convertion dateTime american en dateTimeFrench


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut convertion dateTime american en dateTimeFrench
    Bonjour a tous,

    Je developpe un webservice avec un appel a une procedure stockee vers ma base de donnees MS SQL Server 2005. Cette procedure stockee permet d'executer un update.
    Par defaut sous MS SQL Server, les elements Datetime sont sous format American MDY.
    Donc, je fais un "SET DATEFORMAT dmy" pour le mettre au format french.

    Si, j'execute ma procedure stockee sous MS SQL Server avec des dates french, il les prend sous le bon format.
    Mais, le probleme, c'est que je veux exercuter, ma procedure stockee en C#
    comme ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     SqlCommand maCommande = maConnection.CreateCommand();
               maCommande.CommandType = CommandType.StoredProcedure;
               maCommande.CommandText = "UPDATE_Description";
     
                   SqlParameter param = maCommande.CreateParameter();
                    param.ParameterName = "@ALineActual"; --variable local de la procedure stockee
                    param.DbType = DbType.DateTime;
                    param.Value = ALineActual; --variable de mon entete de function
                    maCommande.Parameters.Add(param);
    Mais qund, j'exceute mon webservice avec une date de 10/07/2008 car fonctionne, mais si je mets 18/07/2008, et bien ca echoue.

    Je connais mon probleme, il s'agit du format de la date, mais je ne sais pas ou le changer ?

    Auriez vous une idee, svp ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Normalement, en utilisant des paramètres, tu n'as pas à te préoccuper du format...
    Quel est le type de la variable ALineActual ? c'est bien un DateTime ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    ui bien sur ds MS SQL server, c un DateTime et ds mon code aussi "DateTime ALineActual"

    par defaut sur mon webservice, les dates sont au format americain mais mois, je le veux que mes dates a submiter soient submitees en french ?

    Tu comprends ce que je souhaiterai faire ?

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    question a 12 centimes, tu récupères comment ta date dans AlineActual ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par padawanette Voir le message
    Tu comprends ce que je souhaiterai faire ?
    non, justement... quand tu utilises des paramètres, les dates ne sont transmises ni en français, ni en américain, ni en autre chose. Elles sont transmises dans un format brut indépendant de la culture. Donc quel que soit le DATEFORMAT de SQL Server, ça ne devrait rien changer

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    J'appelle ma function avec en parametre (DateTime ALineActual). Je renseigne le champs a l'execution de mon webservice.

    Puis, le code s'execute : La donnee alors saisie dans "ALineActual" est alors mis dans le champs "@ALineActual" pour l'envoyer au server SQL

    Le code qui fait ca est le meme que precedemment

    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
    28
    29
     
     public void UPDATE_Description_customer(DateTime ALineActual)
        {
            //
            char[] TabChar = new char[] { '*' };
            string[] TabLibelle = Area.Split(TabChar);
            foreach (string str in TabLibelle)
            {
                if (!(str == ""))
                {
                    SqlConnection maConnection = new SqlConnection(StringConnection);
                    maConnection.Open();
     
                    SqlCommand maCommande = maConnection.CreateCommand();
                    maCommande.CommandType = CommandType.StoredProcedure;
                    maCommande.CommandText = "UPDATE_Description";
     
                  SqlParameter param = maCommande.CreateParameter();
                    param.ParameterName = "@ALineActual"; --variable local de la procedure stockee
                    param.DbType = DbType.DateTime;
                    param.Value = ALineActual; --variable de mon entete de function
                    maCommande.Parameters.Add(param);
     
                    SqlDataReader monCurseur = maCommande.ExecuteReader();
     
                    maConnection.Close();
                }
            }
        }
    Voila, je saisis comme suit ma date a l'execution de mon webservice :

  7. #7
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    je reformule, comment, "physiquement" tu envoies ta date a ton service web ???

    est-ce que tu entres ta date en manuel depuis la page asmx hébergée sur IIS ?

    est-ce que tu as un autre projet qui fait reference au service web ???

    ce qu'on essaye de te dire tous les deux, c'est qu'un objet DateTime se tape le coquillard du format de date de ton pc...

    Par contre, a un moment, tu dois générer un objet DateTime a partir d 'autre chose...code, entrée manuelle, ou autre... charge a toi de gerer le format dans lequel tu attends l'entree utilisateur

    Si ton point d'entrée utilisateur attends une date US, tu devras lui donner une date au format US.


    Est-ce que je suis clair, ou est-il déjà trop tard (fatigue, le philippe )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    ui, j'envoie ma date a mon web service en la saissisant comme sur l'image precedente.

    J'avoue que je ne sais pas ou ca coince ! merci de vos conseils

  9. #9
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    euh...je ne vois pas l'image ...pas grave

    En fait, le pb ne vient pas de ton code, le pb vient de ton appel du service web...

    Plutot que d'utiliser l'interface de test, fais la chose suivante : cree un nouveau projet (console, winform, n'importe...), tu ajours une reference sur ton service web, et tu appelles ta fonction depuis ton projet (par exemple, ajoute un calendrier a ton appli winform), et la, tu devrais voir que ton service web recoit bien la date au format auquel tu l'envoie...

    L'interface web "made in" IIS, elle n'a d'interet que pour les tests les plus basiques, tes utilisateurs ne vont de toute facon pas se connecter dessus (enfin...j'espère, sinon, ca voudrait dire qu'ils se connectent en local a ton serveur web )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Par défaut
    Je n'ai pas tout saisi ce que tu as mis juste au dessus, mais j'ai trouve une parade pour tout ca !
    Je saisie mes dates sous format string et ensuite, je l'ai converti en DateTime grace a DateTime.parse(string) dans mon code.
    it works !!!!!! Je suis contente ! Merci de votre aide.

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

Discussions similaires

  1. Convert Datetime en Date dans BO
    Par MOMO_LAM dans le forum Deski
    Réponses: 12
    Dernier message: 29/11/2007, 15h58
  2. Convert : DateTime - varchar
    Par diaboloche dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/09/2007, 11h23
  3. Problème avec convert datetime
    Par sane79 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/07/2007, 11h43
  4. PB : Overflow converting datetime
    Par borisa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2007, 15h49
  5. Probleme avec la fonction replace et convert datetime
    Par gazzall dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/04/2007, 10h07

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