Wie konvertiert man st_mtime (welches aus der stat Funktion kommt) in string oder char

7

Ich muss st_mtime in ein String-Format konvertieren, um es an die Java-Ebene zu übergeben. Ich versuche, dieses Beispiel zu verwenden Ссылка aber der Compiler erzeugt Fehler

  

ungültige Konvertierung von 'long unsigned int *' in 'const time_t * {aka   lang int const *} '

     

Initialisiere Argument 1 von 'tm * localtime (const time_t *)'   [-fürmissiv]

Was ich falsch mache, wie man mit der Stat-Funktion in der String-Darstellung die Zeit der Dateierstellung bekommt.

Hilfe bitte.

    
testCoder 24.11.2012, 14:53
quelle

3 Antworten

11

Laut stat (2) man-Seite Das Feld st_mtime ist ein time_t (dh nach dem Lesen der Zeit (7) man-Seite, einige Sekunden seit der Unix-Epoche ).

Sie müssen localtime (3) konvertieren time_t zu struct tm in lokaler Zeit, dann strftime ( 3) , um es in eine char* string zu konvertieren.

Sie könnten also etwas wie:

programmieren %Vor%

Verwenden Sie dann timbuf vielleicht durch strdup -ing es.

NB. Ich verwende localtime_r , weil es Thread-freundlicher ist.

    
Basile Starynkevitch 24.11.2012, 15:01
quelle
8

benutze strftime() Es gibt ein Beispiel in der man-Seite , etwa wie folgt:

%Vor%

Würde die Ausgabe ausgeben:

%Vor%     
iabdalkader 24.11.2012 15:00
quelle
1

Sie können dies auf eine andere Weise erreichen:

  1. Deklarieren Sie einen Zeiger auf eine tm Struktur:

    %Vor%
  2. Deklarieren Sie ein Zeichen-Array mit der richtigen Größe, das den gewünschten Zeit-String enthalten kann:

    %Vor%
  3. Brechen Sie die st.st_mtime (wobei st eine struct vom Typ stat ist, d. h. struct stat st ) in eine lokale Zeit mit der Funktion localtime() :

    %Vor%

    Hinweis: st_mtime ist ein Makro ( #define st_mtime st_mtim.tv_sec ) in der Manpage von stat (2) .

  4. Verwenden Sie sprintf() , um die gewünschte Zeit im Zeichenfolgenformat oder in dem gewünschten Format zu erhalten:

    %Vor%

Hinweis: Sie sollten

verwenden %Vor%

vor sprintf() , um das Risiko von Müll zu vermeiden, der beim Multithreading entsteht.

    
Rohit 23.07.2014 06:49
quelle