Uhrzeit in der Konsolenanwendung



  • Wie kann ich die Windows Uhrzeit mit cout <<.....<<endl;
    in der Konsolenanwendung anzeigen lassen?

    Bonusfrage:
    Wie geht das mit der Bios Uhrzeit???



  • mit Hilfe der Sachen, die im <ctime> Header drinnen stehen, kannst du auf die Uhrzeit zugreifen... wobei ich jetzt nicht verstehe, warum du zwischen Windows- und BIOS Uhrzeit unterscheidest 😕 Wo glaubst du denn nimmt Windows seine Uhrzeit her, wenn nicht vom BIOS 😉



  • kannst du mir ein beispiel bzw das beispiel dazu geben?(An dieser Stelle möchte ich klarstellen,dass ich nicht dumm bin!)



  • unbeholfen_ schrieb:

    kannst du mir ein beispiel bzw das beispiel dazu geben?

    MSDN

    (An dieser Stelle möchte ich klarstellen,dass ich nicht dumm bin!)

    ^^ 🙂



  • und wie kann ich das in char[] konvertieren

    Ich möchte doch nur ein Bsp. CODE



  • unbeholfen_ schrieb:

    und wie kann ich das in char[] konvertieren

    Ich möchte doch nur ein Bsp. CODE

    Wie? Du bist nichtmal bereit eine nicht sonderlich lange Seite zu überfliegen, auf der die von dir gewünschten Informationen mit Sicherheit stehen?
    Was glaubst du bringt dir mehr: Wenn dir jetzt jemand die betreffende Funktion postet oder wenn du dir Vorgehensweisen zur Informationsbeschaffung (->MSDN) angewöhnst mit der du deine nächsten 20 Probleme viel schneller, besser und selbstständiger lösen kannst?



  • Für was willst du die Uhrzeit denn in char[] konvertieren?
    Um sie auszugeben musst du das jedenfalls nicht tun.
    Z.B.:

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main()
    {
            time_t *currentTime = new time_t;
            time(currentTime);
    
            tm *zeit = localtime(currentTime);
    
            cout << endl << endl << "\t";
            cout << "Datum: " << zeit -> tm_mday << "." << zeit -> tm_mon + 1 << "." << zeit -> tm_year + 1900;
            cout << endl << "\tUhrzeit: " << zeit -> tm_hour << ":" << zeit -> tm_min << ":" << zeit -> tm_sec;
            cout << endl << endl;
    
            return 0;
    }
    

    //Edit: Sorry, habe den Link gar nicht gesehen. Lasse das hier trotzdem mal stehen, falls sich 'unbeholfener_' in der MSDN verrirt 😉

    Caipi



  • Ok hab ich gemach ,ABER :ich möchte vor dem datum und dem Monot eine 0 stehen haben,wenn der Tag oder der Monat kleiner als 10 ist. ich hab es so versucht .geht aber nicht.

    time_t *currentTime = new time_t; 
        time(currentTime); 
    
        tm *mytime = localtime(currentTime); 
    
    	char buf[10];
    
    	char day[3];
    	strcpy(day, itoa(mytime->tm_mday,buf,10));
    
    	if (day[1]=='\0') 
    	{
    		day[1]=day[0];
    		day[0]='0';
    	}
    
    	char month[3];
    	strcpy(month, itoa(mytime->tm_mon+1,buf,10));
    
    	char year[5];
    	strcpy(year, itoa(mytime->tm_year+1900,buf,10));
    
    	cout << day << "  " << month << "  " << year << endl;
    

    Die Konsole gibt mir aus: 04╠╠2005 2 2005

    aber woher kommen die komischen zeichen und warum steht nochmal das jahr in meinem day? habe ich mit dem strcpy aus versehen den speicher des programms irgendwo überschrieben? ich hab's auch mit einem längeren char[10] probiert, aber das ergebnis ist gleich, nur mit noch mehr dieser komischen zeichen -.-



  • Die FRage wollte ic auch grad stellen 😃



  • Wieso das Problem unötig verkomplizieren?
    Einfach vor der Ausgabe eine IF-Abfrage einbauen.
    Z.B.:

    // Im Falle des Tages
    if(zeit -> tm_mday < 10)
            cout << '0';
    cout << zeit -> tm_mday;
    
    //... etc...
    

    Caipi



  • unbeholfen_ schrieb:

    ...Windows Uhrzeit mit cout...

    die einfachste methode (nicht zu empfehlen, aber tuts auch):

    #include <windows.h>
    
    int main()
    {
        std::cout << "wir haben jetzt: " << system("%date%") << std::endl;
    }
    


  • Unter Linux funktioniert auch das ganz prima.

    Mit strftime kannst Du Deiner Zeit ein beinahe beliebiges
    Ausgabeformat verpassen.

    Siehe

    man strftime
    
    #include <ctime>
    
    int main( int argc, char *argv[] ) {
    
      time_t now = time(0);
      tm* tmNow = localtime( &now );	
    
      char* buffer = new char[10 + 1];	
      memset( buffer, 0, 11 );	
      strftime( buffer, 11, "%d %m %Y", tmNow );
    
      std::cout << buffer << std::endl;
      // Ausgabe: "04 02 2005"
      delete[] buffer;
      return EXIT_SUCCESS;
    }
    

    Gruß

    H.-Gerd


Anmelden zum Antworten