Std Bib - time.h



  • Hi,

    und zwar ich versuche grad ein wenig mit c zu programmieren. dabei bin ich gleich am anfang auf ein Problem gestoßen und zwar DATUMs Berechnungen.

    Meine Problemstellung: die vergangenen Tage seit dem 24.09.2010 berechnen.

    Ich hab mich zwar ein wenig in die time.h Bib reingelesen hab aber wenig daraus lernen können. Kann mir jemand weiterhelfen?

    PS: meine Idee das Datum 24.09.2010 00:00 irgednwie in das time Format bekommen und dann mit difftime dieDifferenz in Sekunden berechnen. Aber wie wandle ich das Datum 24.09.2010 in ein time Format um???

    glg und danke für die Hilfe ....



  • flo_eigentler schrieb:

    Aber wie wandle ich das Datum 24.09.2010 in ein time Format um???

    Hier hast Du ein Beispiel:
    http://cplusplus.com/reference/clibrary/ctime/mktime/



  • edit: zu spät 😛



  • Mit struct tm und der Funktion mktime

    Du füllst die Struktur aus und übergibst sie an mktime, das time_t zurückgibt.

    siehe http://www.cplusplus.com/reference/clibrary/ctime/mktime/



  • #include <stdio.h>
    #include <windows.h>
    #include <time.h>
    
    int main(void)
    {
    
    // Deklaratonen
    	struct tm * timeSTART;
    	time_t startTime;
    	time_t todayTime = time(NULL);
    	double timeDiff;
    
    //Zuweisungen
    	timeSTART.tm_year = 110;
    	timeSTART.tm_month = 8;
    	timeSTART.tm_day = 24;
    	startTime = mktime (timeSTART);
    
    //Programm - CODE
    printf("----------------------------------------------------------------------------------\n");	
    printf("retgh");
    printf("----------------------------------------------------------------------------------\n\n");
    
    // Datum Zeitspanne berechnen ANFANG
    	timeDiff = difftime(time_t todayTime, time_t startTime);
    // Datum Zeitspanne berechnen ENDE
    
    	printf("%s",timeDiff/60/60/24);
    
    // Leere Puffer 
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
    
    // Lese den nächsten Tastendruck 
    getch(); 
    
    }
    

    Irgendwie klappts net 😞 ... was mache ich falsch bzw. mir ist unklar für was benötige ich rawtime für das Bsp aus dem Netz?



  • mktime erwartet einen Zeiger.
    Aber der Zeiger braucht auch Platz wo er hinzeigen soll!
    Die Struktur muss angelegt sein, damit die Daten auch Speicherplatz haben.

    struct tm timeSTART;
    startTime = mktime (&timeSTART);
    


  • printf("%s",timeDiff/60/60/24);
    

    geht auch nicht da time_t eigentlich ein unsigned long ist.
    also

    printf("%lu\n",timeDiff/60/60/24);
    

    Welchen Compiler benutzt du denn?
    Ich nehme wegen Windows an VS 200x. Klick doch mal auf das wort mktime im Quelltext und drücke F1. Dann sollte die (Online-)Hilfe aufgehen.



  • Den letzten Post halb zurück. 😞
    time_t ist ein long und difftime gibt ja ein double zurück.

    printf("%f\n",timeDiff/60/60/24);
    

    Aber man kann auch gleich todayTime - startTime rechnen.

    Ich geh jetzt ins Bett, Gute Nacht.


Log in to reply