Zeit einzelnt ausgeben



  • Hi, wie kann man die Zeit einzelnt ausgeben? also die Sekunden kommen in eine eigende Variable, das Jahr kommt auch in eine eigene Variable, ...

    BD



  • Schau dir mal die chrono Bibliothek an.



  • Ich komme mit der Klasse nicht wirklich klar ... oder ich mache was falsch


  • Mod

    TimePoint schrieb:

    Ich komme mit der Klasse nicht wirklich klar ... oder ich mache was falsch

    Deine Analyse ist korrekt.

    Wenn du weniger Antworten dieser Art möchtest, dann lies:
    http://www.c-plusplus.net/forum/200753
    Und in diesem Fall wohl noch viel wichtiger:
    http://www.tty1.net/smart-questions_de.html

    P.S.: Vielleicht liegen dir die alten C-Funktionen eher? Benutzung auf eigene Gefahr. (Wobei ich zugeben muss, dass ich chrono nicht wirklich für gelungen halte. Ist zwar schick für Zeitunterschiede, aber anscheinend hat die Bibliothek auch den Anspruch, für Datum und Uhrzeit Funktionalität zur Verfügung zu stellen. Dieser Teil ist jedoch arg umständlich)


  • Mod

    Hi, wie kann man die Zeit einzelnt ausgeben? also die Sekunden kommen in eine eigende Variable, das Jahr kommt auch in eine eigene Variable, ...

    Das sind erstmal zwei verschiedene Dinge. Du musst dir klar machen dass man ersteres ohne letzteres erreichen kann.
    (i.A. fasst man die einzelnen Bestandteile eines Datums gar nicht selber an sondern überlässt das den Bibliotheken wie Boost.Date_Time)

    Genau das machen formatierte Ausgabefunktionen wie std::put_time (welche mit dem C++11-Standard eingeführt wurde), std::asctime oder ctime :

    #include <iostream>// Für cout.
    #include <iomanip> // put_time ist in diesem Header deklariert.
    #include <ctime>   // Für std:: localtime, time, asctime und ctime.
    
    int main()
    {
    	std::time_t t = std::time(nullptr); // Gibt die Anzahl der Sekunden seit der Epoche (1. Januar 1970) zurück. std::time_t ist ein Ganzzahltyp.
    	std::cout << std::put_time(std::localtime(&t), "%c") << '\n'; // Der Formatstring kann auch Stunden, Monatsnamen oder Zeitzonennamen repräsentieren
    	std::cout << std::asctime(std::localtime(&t)) << '\n';
    	std::cout << std::ctime(std::localtime(&t)) << '\n';
    	// Selbstverständlich kann das Ergebnis von localtime auch zwischengespeichert werden (sowohl Pointer als auch Pointee).
    }
    

    Der Rückgabewert von localtime enthält übrigens die Variablen von denen du sprichst. Es ist ein Zeiger auf eine Datenstruktur namens std::tm .



  • Das solltest Du Dir mal anschauen.


Log in to reply