10
votes

Comment convertir st_mtime (qui gagne de la fonction stat) à la chaîne ou à caractère

J'ai besoin de convertir ST_MTime au format String pour le transmettre à la couche Java, j'essaie d'utiliser cet exemple http://www.cplusplus.com/forum/unices/10342/ mais le compilateur produit des erreurs

Conversion invalide de "long non signé int * 'à" const temps_t * {aka long int const *} '

Initialisation de l'argument 1 de 'TM * localtime (const temps_t *)' [-Fermissive]

Qu'est-ce que je fais mal, comment obtenir la création du temps de fichier à l'aide de la fonction Stat dans la présentation de chaîne.

aide s'il vous plaît.


0 commentaires

3 Réponses :



16
votes

Selon le Stat (2) < / a> page man, le champ st_mtime est un time_t (c'est-à-dire après avoir lu la TIME (7) MANGE, un nombre de secondes depuis le UNIX EPOCH ).

Vous avez besoin localTime (3) pour convertir ce time_t à un struct tm dans l'heure locale, puis Strftime (3) pour le convertir à un char * chaîne.

afin que vous puissiez coder quelque chose comme: xxx

puis utilisez timbruf Peut-être par STRUP -ing-ger.

nb. J'utilise localTime_r car il est plus convivial.


2 commentaires

Si vous n'êtes pas inquiet du format, vous pouvez également simplement passer la TIME_T dans "CTTIME" pour obtenir une chaîne. (Remarque CURTIC N'EST PAS THILLE-SAFE.)


Mais l'OP a besoin d'une solution de fil-sécurité, car elle est à l'intérieur d'une JVM.



2
votes

Vous pouvez y parvenir de manière alternative:

  1. Déclarez un pointeur à un TM code> Structure: p> XXX PRE> LI>

  2. Déclarez une matrice de caractère de taille appropriée, qui peut contenir la chaîne de temps souhaitée: p> XXX PRE> LI>

  3. break the st.st_mtime code> (où st code> est un struct code> de type stat code>, c'est-à-dire STR STAT STAT ST code>) dans une heure locale à l'aide de la fonction localTime () code>: p>

    memset(file_modified_time, '\0', strlen(file_modified_time));
    


0 commentaires