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 :

utime sous windows, modifier date d'un fichier


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    aucun
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Par défaut utime sous windows, modifier date d'un fichier
    Bonjour à tous,

    J'ai un soucis avec la fonction utime sous Windows. J'ai une fonction qui permet de modifier la date d'un fichier :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /**
     * This function set file date.
     * @param file file path
     * @param date date to set (Format Date = AAAAMMJJ;HHMMSS)
     */
    void setfiledate(char * file, char * date)
    {
       struct tm datetotransform, datetransformed;
       struct utimbuf times;
       char datetemp[20];
       char localdate[20];
     
       datetemp[0] = 0;
       localdate[0] = 0;
     
       printf("\n\nDate Heure en parametre : %s\n",date);
     
       sprintf(datetemp,"%c%c%c%c",date[0],date[1],date[2],date[3]);
       datetotransform.tm_year=atoi(datetemp);
       sprintf(datetemp,"%c%c",date[4],date[5]);
       datetotransform.tm_mon=atoi(datetemp);
       sprintf(datetemp,"%c%c",date[6],date[7]);
       datetotransform.tm_mday=atoi(datetemp);
       sprintf(datetemp,"%c%c",date[9],date[10]);
       datetotransform.tm_hour=atoi(datetemp);
       sprintf(datetemp,"%c%c",date[11],date[12]);
       datetotransform.tm_min=atoi(datetemp);
       sprintf(datetemp,"%c%c",date[13],date[14]);
       datetotransform.tm_sec=atoi(datetemp);
       datetotransform.tm_year = datetotransform.tm_year - 1900;
       datetotransform.tm_mon = datetotransform.tm_mon - 1;
       datetotransform.tm_isdst = -1;
     
       strftime(datetemp, 256, "%H:%M:%S - %d/%m/%Y", &datetotransform);
       printf("--> datetotransform = %s\n", datetemp);
     
       times.actime=mktime(&datetotransform);
       times.modtime=mktime(&datetotransform);
     
       datetransformed = *localtime(&times.modtime);
       strftime(localdate, 20, "%Y%m%d;%H%M%S", &datetransformed);
     
       printf("--> localdate = %s\n", localdate);
       printf("--> Date Heure au final : %ld\n",times.modtime);
     
       if (utime(file, &times) == -1)
        {
          printf("**Impossible de changer la date.**");
    	}
    }
    J'applique cette fonction sur deux fichiers, le premier va posséder une date en été (02/06/2009), le second va possèder une date en hiver (26/12/2009) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main()
    {
       setfiledate("M:\\test\\test_DateEte.txt", "20090602;145929");
       setfiledate("M:\\test\\test_DateHiver.txt", "20091226;085422");
       return 0;
    }
    Résultat :

    Fichier : M:\test\test_DateEte.txt, date heure en parametre : 20090602;145929
    -> datetotransform = 14:59:29 - 02/06/2009
    -> localdate = 20090602;145929
    -> Date Heure au final : 1243947569


    Fichier : M:\test\test_DateHiver.txt, date heure en parametre : 20091226;085422
    -> datetotransform = 08:54:22 - 26/12/2009
    -> localdate = 20091226;085422
    -> Date Heure au final : 1261814062

    Process returned 0 (0x0) execution time : 0.011 s
    Press any key to continue.
    Quand j'applique le timestamp des deux fichiers avec ce site : http://www.timestamp.fr/, ils sont bons.
    Par contre quand je regarde dans l'explorateur Windows l'heure du fichier "M:\test\test_DateEte.txt" est 15:59:29, une heure a été rajoutée. Pas de problème pour le fichier dont la date est en hiver.

    Savez vous d'où peut provenir mon problème ?

    Fichiers que j'utilise en pièce jointe.

    En vous remerciant par avance.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/01/2015, 07h29
  2. Réponses: 5
    Dernier message: 24/08/2009, 18h58
  3. [C]Modifier un fichier .zip sous Windows
    Par Kicker dans le forum Windows
    Réponses: 14
    Dernier message: 05/08/2008, 15h48
  4. [Sous Windows] Freeware de cryptage de fichiers
    Par Yoh dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 20/08/2007, 16h13
  5. date de modification de fichier sous windows
    Par brisbo dans le forum Windows
    Réponses: 2
    Dernier message: 04/05/2006, 23h45

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