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 :

Date et culture


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut Date et culture
    Bonjour à tous,
    Pour mon site j'utilise à plusieurs endroits des dates (DateTime). Afin d'écrire ces dates dans des fichiers XML, je les transforme en string. Lorsqu'une autre page lit ces fichiers XML, je les retransforme en DateTime. Mon environnement de développement est en français, par contre mon hébergeur est en anglais. Pour pallier à ce problème, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Commun.AccesseurDate = "02/28/2008"; // short Date en format Anglo saxon
    private CultureInfo culture = new CultureInfo("fr-FR");
    Convert.ToDateTime(Commun.AccesseurDate, culture).ToShortDateString());
    Mais ça ne fonctionne pas. Quelle est mon erreur?

    Merci beaucoup de vos réponses.

    Nixar

  2. #2
    Nouveau membre du Club Avatar de PereVerti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Par défaut
    Lu,

    J'ai eu un souci un peu similaire avec une base de données ou la date était au format anglais...

    J'ai improvisé la méthode suivante pour mettre la date comme je voulais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string[] sDate = objSedoc_Document.DocumentDate.ToShortDateString().Split('/'); // Récupération de la date au mauvais format et découpe de la date en prenant le '/' comme séparateur dans un tableau de string
                                    if (sDate[0].Length < 2)
                                        sDate[0] = "0" + sDate[0]; // Rajout d'un 0 si il n'y a qu'un seul caractère pour ne pas tout décaler
                                    if (sDate[1].Length < 2)
                                        sDate[1] = "0" + sDate[1]; // Rajout d'un 0 si il n'y a qu'un seul caractère pour ne pas tout décaler
                                    this.txtDocumentDate.Text = sDate[1] + "/" + sDate[0] + "/" + sDate[2]; // Exemple de réécriture de la date dans un format souhaité
    Voilà si ça peut t'aider un peu...

    ++

  3. #3
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut
    Merci beaucoup de ta réponse,

    C'est une solution "à l'ancienne" que je prendrai quand j'en aurai marre de chercher. Pour info j'ai réussi en utilisant la culture à faire cette transcription, mais directement sur une sortie de Calendar (le but du code suivant est de transformer le datetime en string pour l'afficher). Et ca ca marche meme si la culture du système hébergeur est autre que francais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private CultureInfo culture = new CultureInfo("fr-FR");
    Convert.ToString(Calendar1.SelectedDate.Date.GetDateTimeFormats(culture).GetValue(0))

    Merci beaucoup de ta réponse en tout cas.

    Nixar

  4. #4
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut
    @Zyth :
    Merci de ta réponse. Le souci, c'est que si je fais un DateTime.Now pour inscrire la date dans le xml, il va me l'inscrire en format anglo saxon avec le mois avant...

    Donc si je suis ton raisonnement, comment dois-je faire pour l'inscrire en format francais dès le départ dans mon XML?


    Merci de ta réponse.

    Nixar

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    Je suis désolé, j'ai mal testé la chose et en effet, il va inscrire probablement la culture par défaut du serveur si on ne la spécifie pas. Donc, je ne sais pas s'il y a moyen de recevoir la date en culture "neutre" (compatible avec la conversion) mais sinon, je ferais un convert en fr-FR avant la sauvegarde.

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Il y a peut etre plus simple.

    Si on utilise l'objet culture cela revient à modifier l'option des paramètres régionaux de l'OS, donc si l'OS est anglais cela sera au format anglais (qui plus est, est le meme que français).

    CE que je pense c'est que peut importe le format qui est stocké dans la base, c'est au moment où en la converti en string qu'il faut faire un traitement dessus.

    A partir de là tout devrait bien se passer.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2005
    Messages : 80
    Par défaut
    Si je teste ton code, ça me donne une erreur comme quoi la date n'est pas bonne. En fait, je soupçonne qu'il faut assurer la syntaxe jour/mois/année ou année/mois/jour lorsqu'on convertit un string. Logiquement, ta date devrait être inscrite au format fr-FR directement dans le XML.

  8. #8
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 174
    Par défaut
    Citation Envoyé par Nixar Voir le message
    Bonjour à tous,
    Pour mon site j'utilise à plusieurs endroits des dates (DateTime). Afin d'écrire ces dates dans des fichiers XML, je les transforme en string. Lorsqu'une autre page lit ces fichiers XML, je les retransforme en DateTime. Mon environnement de développement est en français, par contre mon hébergeur est en anglais. Pour pallier à ce problème, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Commun.AccesseurDate = "02/28/2008"; // short Date en format Anglo saxon
    private CultureInfo culture = new CultureInfo("fr-FR");
    Convert.ToDateTime(Commun.AccesseurDate, culture).ToShortDateString());
    Mais ça ne fonctionne pas. Quelle est mon erreur?

    Merci beaucoup de vos réponses.

    Nixar
    Pour les dates qui sont enregistrés sur une base en US, j'utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Convert.ToString(datas[key], System.Globalization.CultureInfo.CreateSpecificCulture("en")))
    Pour les re caster essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime.Parse('ta_date').ToString("dd/MM/yyyy");

  9. #9
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut
    Merci beaucoup de toutes vos réponses. C'est résolu. (j'ai utilisé la solution de User.Anonymous)

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

Discussions similaires

  1. La culture des dates dans une page
    Par zooffy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/02/2011, 14h59
  2. [1.x] afficher la date en fonction de la culture utilisateur
    Par symfony30000 dans le forum Symfony
    Réponses: 5
    Dernier message: 28/05/2010, 15h12
  3. Changer une date selon la culture
    Par zooffy dans le forum ASP.NET
    Réponses: 11
    Dernier message: 26/04/2010, 11h07
  4. Réponses: 2
    Dernier message: 26/01/2010, 08h51
  5. Problème de culture avec les dates
    Par Nixar dans le forum Développement
    Réponses: 3
    Dernier message: 20/08/2008, 20h25

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