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 :

Pb avec datetime


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut Pb avec datetime
    Bonjour,

    j'ai des enregistrements stockés avec des dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        CreationDate = Convert.ToDateTime(((Label)GridView1.Rows[i].FindControl("Label1")).Text);
     
                    /// number of Outstandings
                    SqlCommand oCommand = new SqlCommand("SELECT Count(*) as co FROM RequestGroup, Request WHERE RequestGroup.CreateTime=@CreationDate AND Request.GroupId=RequestGroup.RequestGroupId AND Request.Status='Outstanding' GROUP BY RequestGroup.RequestGroupId", mycn);
                    oCommand.Parameters.Add("@CreationDate", DbType.DateTime).Value = CreationDate;
     
                    SqlDataReader myda = oCommand.ExecuteReader();
    Or, quand je fais le select, rien n'est ramené alors que la date fournie est correcte, comment régler ce pb avec le format date ?

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    En ce qui concerne les dates, quelle que soit la source, il faut TOUJOURS spécifier le format lors de la convertion. Beaucoup, de paramètres entrent en compte lors de cette conversion: la config windows, la langue du navigateur, ...
    Une fois que la date est typée en DateTime plus de soucis.

    Ex
    01/02/2009 en fr-FR vaut pour le 1er février 2009
    01/02/2009 en en-US vaut pour le 2 janvier 2009

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime CreationDate = Convert.ToDateTime(((Label)GridView1.Rows[i].FindControl("Label1")).Text, new CultureInfo("fr-FR").);
    Si tu es certain que la saisie se fait en fr-FR.

    Comment connaitre la culture du navigateur? Personnellement, toutes mes pages web héritent d'une classe de base "BaseUI" qui elle-même hérite de "System.Web.UI.Page":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public partial class Default : BaseUI
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
    }
    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
    public abstract class BaseUI : System.Web.UI.Page
    {
        public BaseUI()
        {
            // Permet de fixer la culture en fonction du navigateur
            try
            {
                // tentative de lecture de la première langue par défaut
                Page.Culture = System.Web.HttpContext.Current.Request.UserLanguages[0].ToString();
            }
            catch (Exception)
            {
                // en cas d'echec on fixe la culture au français
                Page.Culture = new CultureInfo("fr-FR").ToString();
            }
        }
    }
    Ainsi, à chaque initialisation de mes pages je tente de récupérer la culture du navigateur et fixe la culture de ma page en fonction. Ainsi, tous les contrôles sont affectés.

    En ce qui concerne la saisie de date, c'est tellement risqué de demander à l'internaute de la saisir en la tapant que je mets des listes déroulantes ou encore mieux des contrôles calendar qui envoient directement un type DateTime.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    Merci pour ces infos.

    Quelle est la culture pour l'angleterre ?

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    en-GB

    Si tu cherches une culture, tu peux aller dans IE > Outils > Options Internet > Langage > Ajouter et tu auras toutes les langues supportées.

    En ce qui concerne le traitement des dates prend l'habitude d'utiliser uniquement le "SortableDateTimePattern":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToDateTime("yyyy-MM-ddThh:mm:ss", System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.SortableDateTimePattern)
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Requête avec DateTime
    Par LeNovice dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/11/2007, 16h38
  2. [SQL] Requête delete avec datetime comme clé
    Par gostbuster dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/07/2007, 09h06
  3. problême avec datetime
    Par Xanime dans le forum Services Web
    Réponses: 1
    Dernier message: 13/06/2007, 16h24
  4. substring avec datetime
    Par innova dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/02/2007, 15h09
  5. Réponses: 9
    Dernier message: 21/04/2006, 16h24

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