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

VB.NET Discussion :

Valeur DateTime Tick


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut Valeur DateTime Tick
    Bonjour à tous,

    Je rencontre depuis quelques temps un soucis sur un service Windows permettant de télécharger et importer toutes les nuits des fichiers XML en base de données, jusque là rien de bien compliqué...

    Pour savoir si un fichier doit ou non être télécharger, on regarde si la date de modification du fichier distant (sur le FTP) est plus récente que celle de notre fichier local, rien de bien compliqué non plus me direz vous. Pour comparer les dates, on se sert du tick.
    En règle générale, les mises à jour sur le FTP se font aux alentours de 22h et le service se lance à 1h du matin (le lendemain donc).

    Cependant, j'ai un soucis lorsque des fichiers sont mis à jour côté FTP, ils ne le sont que 2 jours plus tard chez nous.
    Par exemple, une mise à jour côté FTP a lieu un lundi à 22h, le service qui tourne le mardi à 1h ne va pas détecter de modification et les mises à jours ne se feront que le mercredi à 1h.

    Pour identifier la source du problème, j'ai donc loguer les ticks de dernière modification et stupeur voici ce que j'obtiens :
    - Fichier local, dernière modification : 20/01/2012 02h00 -> tick = 634626180209853972
    - Fichier distant, dernière modification : 24/04/2012 22h03 -> tick = 634625654400000000

    On remarque bien que la valeur du tick du fichier local est plus grande alors que la dernière modification est antérieure à celle du fichier distant...

    Et la question est...Pourquoi ?

    (Si vous avez une meilleure solution que le tick, ce n'est pas moi qui ai mit cette méthode en place, je suis ouvert )

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    pourquoi ne pas comparer les dates directement ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Parce que c'était fait comme ça avant, que l'on avait pas identifié de problème...

    C'est une solution certes, mais ces valeurs bizarres me chiffonnent !!

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je veux bien croire
    tu as bien vérifié à l'exécution que c'est bien les dates que tu donnes qui sont utilisées par le code

    sinon quand je dois comparer 2 dates, moi je compare les 2 dates ... il ne me vient pas à l'idée de les transformer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Par curiosité, je viens de faire le test avec ces deux dates et j'obtiens un résultat cohérent...

    N'y a-t-il pas une instruction qui modifierait ces dates avant d'en extraire les ticks ? Ne serait-ce pas simplement inversé ?

    Bref, avec du code, ce serait mieux ^^

  6. #6
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Ouais il ne me serait pas venu à l'idée de les transformer non plus...mais bon.

    Vous voulez du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'FTP date bug fix : the year is always the current year 
                        'consequence : on year change all the files are considered updated
    Dim correctedRemoteDate As DateTime = remoteFile.LastModified
    If remoteFile.LastModified > DateTime.Now Then
           correctedRemoteDate = correctedRemoteDate.AddYears(-1)
    End If
    'Checking if remote file has  been modified since the last update)
    If correctedRemoteDate.Ticks > localFile.LastWriteTime.Ticks Then
           Me.modifiedProducts.Add(Me.FoProductsDirectory & "\" & remoteFile.Name, remoteFile)
    End If
    RemoteFile est de type FTPFile, définit dans une librairie externe...la date est peut être dans une culture différente.
    Je vais reloguer les dates cette nuit pour être sur, mais ce que je comprends pas pourquoi le tick fonctionne deux jours après et pas le lendemain...

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il doit y avoir un bug dans ta dll qui récupère la date, un bug aussi gros ne peut pas être dans le framework

    soit ca ne récupère pas la bonne date, soit ca la transforme mal en datetime à partir du string
    une variable datetime en .net n'as pas de culture, c'est une représentation binaire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Erreur de syntaxe lors de la conversion d'une valeur datetime
    Par info3licen dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 28/05/2011, 01h31
  2. Slider : Indexer les valeurs dans Ticks
    Par Arnard dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 16/09/2010, 13h40
  3. 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
  4. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  5. Inserer une valeur NULL dans un champ datetime
    Par Karibou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2005, 10h58

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