Kann mir bitte einer was erklären...



  • Hi, kann mir bitte einer das Programm bissl erklären?
    Besonders

    zeit = time(NULL);

    und localtime sowie asctime...

    DANKE!!

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main()
    {
        tm* zeiger;
        time_t zeit;
        zeit = time(NULL);
        cout << "\nSekunden seit dem 1.1.1970 " << zeit;
    
        zeiger = localtime(&zeit);
        cout << "\nDatum und Uhrzeit    " << asctime(zeiger);
    
        fflush(stdin); cin.peek();
        return 0;
    }
    


  • Helfen dir auch Manual-Einträge als Erklärung?:

    man: time(3) ermittelt die aktuelle Zeit (Sekunden seit 1.1.1970)
    man: localtime wandelt das Ganze in eine Struktur um, aus der du Datum, Uhrzeit etc auslesen kannst
    man: asctime verarbeitet diese Struktur zu einem String.

    PS: fflush(stdin) ist afaik Nonsens.



  • Danke... aber mit den seiten kann ich leider nicht viel anfangen, bin noch Anfänger und mein englisch ist auch nicht das beste...

    und wieso muss bei time() unbedingt NULL stehen?
    Wenn ich alles weglss oder ne Zahl reinschreib, dann gibs ein Fehler...
    Was bringt das NULL dort??

    und ist time_t ein Datentyp?? Sowas wie int?
    Was müsste ich zum Beispiel angeben, wenn ich die Zeit von 1970 in Minuten haben möchte?

    und dann wird ein Zeiger von der tm-Struktur gemacht und der zeigt dann auf die Adresse vom Ergebnis von localtime?? Ja?
    Wieso muss der von der Struktur tm sein?

    Und wie ich das jetzt verstanden habe wandelt asctime den Code einfach in ein lesbaren String?



  • Ania87 schrieb:

    Danke... aber mit den seiten kann ich leider nicht viel anfangen, bin noch Anfänger und mein englisch ist auch nicht das beste...

    und wieso muss bei time() unbedingt NULL stehen?
    Wenn ich alles weglss oder ne Zahl reinschreib, dann gibs ein Fehler...
    Was bringt das NULL dort??

    time() erwartet einen Pointer auf eine time_t Variable - und schreibt in diese Variable zusätzlich den Wert, den es ausgeben will (wenn dort etwas anderes als NULL steht).
    (die Funktionen stammen noch aus C-Zeiten, deshalb hat time() kein Default-Argument)

    und ist time_t ein Datentyp?? Sowas wie int?

    ja, ist er (dürfte ein entsprechend großer unsigned int sein)

    Was müsste ich zum Beispiel angeben, wenn ich die Zeit von 1970 in Minuten haben möchte?

    cout<<zeit/60;
    

    und dann wird ein Zeiger von der tm-Struktur gemacht und der zeigt dann auf die Adresse vom Ergebnis von localtime?? Ja?

    Ja, genau richtig

    Wieso muss der von der Struktur tm sein?

    Weil localtime() dir einen Zeiger auf eine deratige struct zurückliefert.

    Und wie ich das jetzt verstanden habe wandelt asctime den Code einfach in ein lesbaren String?

    Ja, genau das macht er (üblicherweise in einem festen Format) - wenn du ein eigenes Format für die Ausgabe haben willst, kannst du auch direkt die Elemente von *zeiger auslesen, z.B.:

    string monate[]={"Januar","Februar","März",...,"Dezember"};
    cout<<"Heute ist der "<<zeiger->tm_mday<<". "<<monate[zeiger->tm_mon]<<" "<<zeiger->tm_year+1900<<endl;
    


  • oki danke schön 🙂


Anmelden zum Antworten