Unix Timestamp in Datum umrechnen

  • Themenstarter Themenstarter Paper
  • Beginndatum Beginndatum
P

Paper

Hallo leute ich muss nochmal nerven :)
Ich habe ein Problem und zwar schaff ich es nicht einen Unix Timestamp in ein lesbares Datum und Uhrzeit zu konvertieren. :/ ich verzweifel da schon. Ich bin überhaupt nicht C++ begabt :D

Kann mir einer bitte helfen?:)

Gruß Paper
 
Was funktioniert denn nicht?


Ich habe keine Ahnung wie ich das machen soll. Mein Code sieht bis jetzt so aus.

C++:
 ifstream file;
file.open ("squid1.log");


//Prüft ob file offen ist
if (file.is_open()) {
  string TiSt;

//Ließt den ersten String und ignoriert den Rest
  while (file >> TiSt && file.ignore(numeric_limits<streamsize>::max(), '\n')) {
    cout <<TiSt << endl;
    
  }
}


//Fehler ausgabe wenn die Datei nicht geöffnet/gefunden werden kann
if (!file.eof()) {
                cerr << "Fehler beim ausgeben der Datei.";}
                
else {

//Wenn die Datei geöffnet/gefunden wurde                
cout <<endl <<endl;
cout <<"\t Zum schliessen druecken Sie Enter" <<endl <<endl;  }

und ich muss es halt i.wie schaffen "TiSt" (was ja den Timestamp beinhaltet) weiter zu verwenden und das umzuwandeln und mirhalt wieder anzeigen zulassen. Da hab ich halt überhaupt keine Ahnung wie ich das anstellen soll. Programmieren ist garnicht meins :D
 
Ich habe mir mal das hier zusammen gebastelt :D ist das wenigstens ein kleiner lösungsansatz?

C++:
char buffer[80]; 


time_t TiSt;
struct tm * timeinfo;


time (&TiSt);
timeinfo = localtime (&TiSt);
strftime(buffer, sizeof(80), "[%H:%M:%S %m/%d/%Y]", localtime(&TiSt));
puts (buffer);
cout << TiSt;
 
Hab was anderes versucht jetzt bekomme ich wenigstens ein Datum.
Folgender Code:

C++:
time_t TiSt = time (NULL);
struct tm * timeinfo = localtime ( &TiSt );
printf ("%02d.%02d.%04d\n", timeinfo->tm_mday, timeinfo->tm_mon, timeinfo->tm_year+1900);

jetzt muss ich da nur noch eine Uhrzeit hinbekommen :D und das ganze halt bis zum ende des Accesslogs :D

korrektur: das Datum ist falsch -.- xD
 
Zuletzt bearbeitet von einem Moderator:
Ich hab es für die Uhrzeit mal ähnlich versucht und es sieht momentan so aus

C++:
time_t TiSt = time (NULL);
struct tm * timeinfo = localtime ( &TiSt );

//Datum anzeigen
printf ("%02d.%02d.%04d", timeinfo->tm_mday, timeinfo->tm_mon, timeinfo->tm_year+1900);

//Uhrzeit anzeigen
printf ("%H:%M:%S", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);

jedoch Stürzt mein Programm ab wenn ich das mit der Uhrzeit reinbringe, wenn ich es weg lasse funktioniert es super. Das ist vielleicht ein mist eh :D
 
Hi.

Du mußt doch nun wirklich nur mal den Beispielcode in dem Link den ich dir gegeben habe anschauen.

sizeof(80) macht keinen Sinn.

%H %M %S bedeutet bei printf etwas ganz anderes als bei strftime.

C:
strftime (buffer,80,"%H:%M:%S %m/%d/%Y",timeinfo);
Gruß
 
Diese geschichte mit dem sizeof(80) nutz ich nichtmehr :) hab ich selbst gesehen das es i.wie schwachsinn war, habe da nicht nachgedacht.

Zur Zeit sieht mein Code für das Datum so aus

C++:
time_t TiSt = time (NULL);
struct tm * timeinfo = localtime ( &TiSt );

//Datum anzeigen
printf ("%02d.%02d.%04d", timeinfo->tm_mday, timeinfo->tm_mon, timeinfo->tm_year+1900);
 
Das gibt mir nur die aktuelle Uhrzeit und das aktuelle Datum aus. Ich muss es aber so machen das die werte einer .log Datei in ein Datum und eine Uhrzeit umgewandelt werden. Vielleicht habe ich mein Problem doof erklärt oder heute ist einfach nicht mein Tag.
 
Zurück