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 :

Erreur DateTime ComprareTo(DateTime)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Par défaut Erreur DateTime ComprareTo(DateTime)
    Bonjour à tous,

    Je rencontre des problèmes au cours d'un développement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DateTime dateNow = DateTime.Now;                 
    DateTime now = dateNow.Subtract(new TimeSpan(0,0,0,0,dateNow.Millisecond));
    _log.Debug("La date courante est \"" + now.ToString() + "." + now.Millisecond.ToString() + "\" ( " + System.Threading.Thread.CurrentThread.CurrentCulture.ToString() + " )"); 
     
    [...]
     
    DateTime startforecast = DateTime.ParseExact(date + " " + entr[(int)ForecastFileFields["start"]].ToString(), "g", new CultureInfo("fr-FR"));
    DateTime stopforecast = DateTime.ParseExact(date + " " + entr[(int)ForecastFileFields["stop"]].ToString(), "g", new CultureInfo("fr-FR"));
     
    _log.Debug("La date de début est \"" + startforecast.ToString() + "." + startforecast.Millisecond.ToString() + "\" : correspondance " +  (now.CompareTo(startforecast) == 0 ? "vérifiée" : "non valide") );
    _log.Debug("La date de fin est \"" + stopforecast.ToString() + "." + stopforecast.Millisecond.ToString() + "\" : correspondance " + (now.CompareTo(stopforecast) == 0 ? "vérifiée" : "non valide"));
    Le principe étant de récupérer au sein d'un fichier des paramètres me permettant de construire une date d’échéance et de vérifier si elle correspond à la date courante (toutes les minutes).

    Cependant le fichier de logs montre les résultats suivants :

    2010-10-29 16:53:00,095 [5172] DEBUG : La date courante est "29/10/2010 16:53:00.0" ( fr-FR )

    [...]

    2010-10-29 16:53:00,110 [5172] DEBUG : La date de début est "29/10/2010 14:30:00.0" : correspondance non valide
    2010-10-29 16:53:00,110 [5172] DEBUG : La date de fin est "29/10/2010 16:53:00.0" : correspondance non valide

    Je ne comprend pas pourquoi le CompareTo(DateTime) me retourne une valeur différente de 0 sachant que les deux DateTime comparées sont identiques.

    Par ailleurs j'ai rencontré ce problème dès lors que j'ai utilisé un DateTime.ParseExact() au lieu d'un DateTime.Parse()... j'ai cependant besoin du ParseExact() au sein de mon programme !

    Quelqu'un aurait-il une solution ?

    Merci par avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    En fait, tu supposes que la plus petite précision du DateTime est la milliseconde : ce n'est bien entendu pas le cas puisque DateTime se base sur l'horloge interne du système et les "Ticks" (pour schématiser).

    Si tu remplace ton test "now.CompareTo(stopforecast) == 0" par "now.Ticks == stopforecast.Ticks", je penses que tu vas obtenir false dans les deux cas, ce qui indique bien que les deux DateTime sont différents, à cause de la façon dont tu initialises la variable "now".

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

Discussions similaires

  1. erreur 1292: invalid datetime format
    Par jpbertra dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/02/2013, 18h28
  2. SQL SERVER/DELPHI Erreur Conversion CHAR DATETIME
    Par Macadoshis dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/06/2008, 12h52
  3. erreur convertion string/datetime
    Par Yurnero_ dans le forum InfoPath
    Réponses: 3
    Dernier message: 23/05/2008, 16h05
  4. Erreur conversion valeur datetime à partir chaîne de caractères
    Par goullater dans le forum Développement
    Réponses: 1
    Dernier message: 16/04/2008, 14h55
  5. erreur d'affichage datetime !
    Par amazircool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/11/2007, 19h26

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