Master Z Geschrieben 29. April 2004 Geschrieben 29. April 2004 Hi leute könnte mir jemand von euch sagen wie ich in C das aktuelle Datum ausgeben kann? Die Zeit kann ich ja schon ausgeben aber das Datum noch nicht!Muss man es auch mit #include<time.h> machen! Zitieren
robotto7831a Geschrieben 29. April 2004 Geschrieben 29. April 2004 Hallo, Du mußt dafür die time.h includieren. time_t timer; struct tm *tblock; /* Erhält die Tageszeit */ timer = time(NULL); /* Wandelt Datum und Zeit in eine Struktur um */ tblock = localtime(&timer); char buf[30]; sprintf(buf,"%04d%02d%02d%02d%02d%02d",tblock->tm_year+1900,tblock->tm_mon+1,tblock->tm_mday,tblock->tm_hour,tblock->tm_min,tblock->tm_sec); [/code] Frank Zitieren
nic_power Geschrieben 29. April 2004 Geschrieben 29. April 2004 Hallo, Hallo, Du mußt dafür die time.h includieren. sprintf(buf,"%04d%02d%02d%02d%02d%02d",tblock->tm_year+1900,tblock->tm_mon+1,tblock->tm_mday,tblock->tm_hour,tblock->tm_min,tblock->tm_sec); Frank Zur Konvertierung eines "struct tm *" sollte man besser auf strftime() zurückgreifen, von Hause aus eine Unmenge an Formaten bietet und man sich die strings nicht mit sprintf() zusammenbasteln muss. Nic Zitieren
Master Z Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 Hab da schon einmal eine Lösung gefunden!Kann sie aber nicht so richtig verstehen kann sie mir einer von euch vielleicht erklären? #include <stdio.h> /* puts, size_t */ #include <time.h> /* strftime, time_t, localtime */ #include <locale.h> /* setlocale, LC_ALL */ #define SIZE 128 static void print( time_t const date ) { char buff[ SIZE ]; if( strftime( buff, SIZE, "%A %x", localtime( &date ))) puts( buff ); getchar(); } #undef SIZE int main( void ){ time_t const date = time( 0 ); setlocale( LC_ALL, "" ); if( date !=( time_t )-1 )print( date ); } Zitieren
nic_power Geschrieben 29. April 2004 Geschrieben 29. April 2004 Hallo, das gibts eigentlich nicht viel zu erklären. strftime() arbeitet - ähnlich wie printf - mit Format-Strings. %A steht dabei für den Namen des Wochentags, %x für das Datum bezogen auf die gesetzte locale. Ein komplette Beschreibung der Format-Strings findest Du in der entsprechende Manual-Page. Nic Zitieren
Master Z Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 Hallo, das gibts eigentlich nicht viel zu erklären. strftime() arbeitet - ähnlich wie printf - mit Format-Strings. %A steht dabei für den Namen des Wochentags, %x für das Datum bezogen auf die gesetzte locale. Ein komplette Beschreibung der Format-Strings findest Du in der entsprechende Manual-Page. Nic Kannst du vielleicht mal die einfachste Lösung posten,wie man das datum ausgibt!Hab noch nie mit der strftime() gearbeitet und weiß nicht wie man sie richtig anwendet! Zitieren
Master Z Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 Ja hab da noch mal gleich ne Zusatzfrage!Ist es möglich das ausgelesene Datum mit einem eingegebenen Datum zu vergleichen? Zitieren
reuabreliz Geschrieben 16. März 2007 Geschrieben 16. März 2007 Kannst du vielleicht mal die einfachste Lösung posten,wie man das datum ausgibt!Hab noch nie mit der strftime() gearbeitet und weiß nicht wie man sie richtig anwendet! Also ganz einfach ne #include <time.h> #include <iostream> int main() { time_t timeNow; tm *heute; //macht einen zeiger auf das struct tm in dem Informationen // ueber zeit datum und so drinstehen timeNow = time(0); heute = localtime(&timeNow); // mit localtime() gibt man heute die // Informationen ueber das datum umgerechnet // zurueck tagHeute = heute->tm_mday; //die variable tm->mday gibt den heutigen // tag zurueck monatHeute = heute->tm_mon+1; //gibt das heutige monat -1 zurueck // deswegen +1 jahrHeute = heute->tm_year+1990; //gibt das datum zurueck std::cout << "Datum: " << tagHeute << "." << monatHeute << "." << jahrHeute << std::endl; //std::cout ist in der iostream library <iostream> man kann natürlich auch // printf benutzen Zitieren
reuabreliz Geschrieben 16. März 2007 Geschrieben 16. März 2007 Ja hab da noch mal gleich ne Zusatzfrage!Ist es möglich das ausgelesene Datum mit einem eingegebenen Datum zu vergleichen? Was heißt vergleichen. Meinst welches das älter ist von den zwei Datumen. Das ist nämlich nicht so schwer die zu vergleichen. Funktion dazu: int datum_vergleich(int tag, int monat, int jahr, int tagVergl, int monatVergl, int jahrVergl) { if(jahr < jahrVergl) return 0; // das datum ist nicht groeßer als das zu vergleichende elseif(jahr == jahr Vergl) //wenn das jahr gleich ist das monat ueberpruefen { if(monat < monatVergl) return 0; //das datum ist nicht groeßer als das zu vergleichende elseif(monat == monatVergl) //wenn das monat auch = ist, tag vergleichen { if(tag < tagVergl) return 0; elseif(tag == tagVergl) return 2; //datum ist gleich } } return 1; //das datum ist größer als das zu vergleichende datum } Zitieren
reuabreliz Geschrieben 16. März 2007 Geschrieben 16. März 2007 Was heißt vergleichen. Meinst welches das älter ist von den zwei Datumen. Das ist nämlich nicht so schwer die zu vergleichen. Funktion dazu: int datum_vergleich(int tag, int monat, int jahr, int tagVergl, int monatVergl, int jahrVergl) { if(jahr < jahrVergl) return 0; // das datum ist nicht groeßer als das zu vergleichende elseif(jahr == jahr Vergl) //wenn das jahr gleich ist das monat ueberpruefen { if(monat < monatVergl) return 0; //das datum ist nicht groeßer als das zu vergleichende elseif(monat == monatVergl) //wenn das monat auch = ist, tag vergleichen { if(tag < tagVergl) return 0; elseif(tag == tagVergl) return 2; //datum ist gleich } } return 1; //das datum ist größer als das zu vergleichende datum } BIttesehr Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.