Datum- und Uhrzeitausgabe
-
Hallo,
habe es geschafft, dieses herauszufinden:gotoxy(8,24); cout << "Sie haben heute, den "<< __DATE__ << ", um "<< __TIME__ << " angefangen zu spielen!";
Das funktioniert auch super, aber wenn ich das Programm schließe, und wieder öffne,
bleibt die Uhrzeit, die ich vorher stehen hatte.Kann man das ständig aktualisieren lassen?
oder habe ich etwas falsch gemacht... ?
-
__DATE__ und __TIME__ sind keine Funktionen, sondern Makros die beim compilieren ersetzt werden. Google: c++ predefined macros
und sonst Google: c++ time
-
__DATE__ und __TIME__ sind Compilezeitvariablen soweit ich weiss, also ändern die sich beim Ausführen net.
-
Staubamrandedestrums schrieb:
__DATE__ und __TIME__ sind keine Funktionen, sondern Makros die beim compilieren ersetzt werden. Google: c++ predefined macros
und sonst Google: c++ timeDa gibt es viele Sachen! Danke erstmals.
Doch welche soll ich für eine Ausgabe in der Konsole benützen?
Könntest du mir das eventuell zeigen?
Wäre dir sehr dankbar!
-
Carmack schrieb:
__DATE__ und __TIME__ sind Compilezeitvariablen soweit ich weiss, also ändern die sich beim Ausführen net.
Wie muss ich das dann schreiben, dass es sich jedes Mal aktualisiert, wenn ich das Programm neu starte?
-
Verwende die Funktionen der <ctime> - besonders time() und asctime() sind recht nützlich.
-
Schau mal hier:
<http://www.roguewave.com/support/docs/>
- SourcePro C++ Edition 9, Update 1
- Standard C++ Library Module User's Guide
- Chapter 25: Facets
- 25.4 Using a Stream's FacetGruß
Werner
-
Ich verstehe immer noch nicht, was ich jetzt reinschreiben sollt
-
Also diese Variablen benutzt man soweit ich weiss in der gaengigen Praxis ueberhauptnicht.
Extra fuer diesen Zweck bietet sich die ctime.h an. Diese ermoeglicht das auslesen der Zeit und mit ihr kann man auch genau bestimmen, wann die Zeit aktualisiert werden soll.
// Zeit in Sekunden seit 1.1.1970 time_t sekunden = time(NULL); //Ermittelt das momentane Datum und die momentane Uhrzeit tm *uhr = localtime(&sekunden);
Auf die Variablen kann man dann folgendermassen zugreifen:
uhr->tm_min;
uhr->tm_hour;IN VC++ beispielsweisse werden auch alle Moeglichkeiten angezeigt.
Um waehrend des Programmablaufs die aktuelle Zeit zu bekommen, einfach die time() Funktion erneut aufrufen und das Ergebnis erneut mit localtime() umwandeln lassen.
LG Dustin
-
Herzlichen Dank!
Das es so einfach ist, dachte ich mir nicht!
Wie geht das mit dem Datum?
-
-
Gleicher Zugriff wie mit der Zeit nur die Structelemente heissen anders.
uhr->tm_day
uhr->tm_month <- hier bin ich mir nicht ganz sicher, kann auch tm_mon sein
und
uhr->tm_year fuer das jahransonsten einfach mal ausprobieren...
eine ausfuehrliche Doku darueber findest du uebrigens hier:
http://www.cplusplus.com/reference/clibrary/ctime/
-
-
LMwoot schrieb:
Gleicher Zugriff wie mit der Zeit nur die Structelemente heissen anders.
uhr->tm_day
uhr->tm_month <- hier bin ich mir nicht ganz sicher, kann auch tm_mon sein
und
uhr->tm_year fuer das jahransonsten einfach mal ausprobieren...
eine ausfuehrliche Doku darueber findest du uebrigens hier:
http://www.cplusplus.com/reference/clibrary/ctime/Trau mich schon gar nicht mehr fragen
Wenn ich das eingebe, stimmt mit der zeit alles zusammen:
time_t sekunden = time(NULL); tm *uhr = localtime(&sekunden); gotoxy(5,5); cout <<"Uhrzeit: "<<uhr->tm_hour<<":"<<uhr->tm_min<<":"<<uhr->tm_sec;
Aber wenn ich das mit dem Datum mache:
gotoxy(5,6); cout <<"Datum: "<<uhr->tm_day<<"."<<uhr->tm_month<<"."<<uhr->tm_year;
Gehts leider nicht. Bin ich zu blöd dafür?
-
Geht nicht ist keine Fehlerbeschreibung verdammte Axt!
Evtl. musst Du beachten dass der Monat von 0-11 (statt 1-12) geht und dass das Jahr minus 1900 geliefert wird (also 107 entspricht 2007).
-
LordJaxom schrieb:
Geht nicht ist keine Fehlerbeschreibung verdammte Axt!
Wenn ich das ins Menü rein schreibe:
gotoxy(5,6);
cout <<"Datum: "<<uhr->tm_day<<"."<<uhr->tm_month<<"."<<uhr->tm_year;kommen Fehlermeldungen namens:
[C++ Error] Unit1.cpp(106): E2316 'tm_month' is not a member of 'tm'
[C++ Error] Unit1.cpp(106): E2316 'tm_day' is not a member of 'tm'Wie kann ich dieses Problem beseitigen?
-
tm_sec
tm_min
tm_hour
tm_mday
tm_mon
tm_year
tm_wday
tm_yday
tm_isdstHier nochmal eine Uebersicht der ganzen Structelemente. Dieses stehen nach dem localtime() Funktionsaufruf alle in uhr zur Verfuegung.
Das Jahr muss wie schon erwaehnt eben +1900 gezaehlt werden und der Monat noch +1. Frag nicht warum... programmierer moegen es ja meist ein bisschen komplizierter als es eigentlich is
-
Das Problem ist beseitigt, indem du anstatt tm_day tm_wday benutzt und anstatt tm_month tm_mon
LG
-
Danke an allen!
Jetzt habe ich noch eine Frage, die jedoch nicht in diesen Thread passt:
Kurz gesagt: Wie gebe ich einen färbigen Text aus?
Siehe hier:
gotoxy(5,5); cout<<"Ich möchte diese Zeile zum Beispiel grün haben";
Eventuell möchte ich noch einen anderen Hintergrund (Bei einer Konsole).
Ich danke euch im Voraus!
-
Mithilfe von SetConsoleTextAttribute() (WINAPI).
MfG