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.
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.
benutze strftime()
Es gibt ein Beispiel in der man-Seite , etwa wie folgt:
Würde die Ausgabe ausgeben:
%Vor%Sie können dies auf eine andere Weise erreichen:
Deklarieren Sie einen Zeiger auf eine tm
Struktur:
Deklarieren Sie ein Zeichen-Array mit der richtigen Größe, das den gewünschten Zeit-String enthalten kann:
%Vor% 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()
:
Hinweis: st_mtime
ist ein Makro ( #define st_mtime st_mtim.tv_sec
) in der Manpage von stat (2) .
Verwenden Sie sprintf()
, um die gewünschte Zeit im Zeichenfolgenformat oder in dem gewünschten Format zu erhalten:
Hinweis: Sie sollten
verwenden %Vor% vor sprintf()
, um das Risiko von Müll zu vermeiden, der beim Multithreading entsteht.
Tags und Links c datetime android-ndk string-conversion