datum stimmt nicht, lässt sich auch nicht änderen... why?



  • Für mein Pacsnake hab ich ein log file, welches auflistet ob bilder richtig ge-
    laden wurden oder wenn nicht, was der grund dafür ist. es wird beim log auch
    eine zeit mit angegeben, also mit datum... aber anstatt zum beispiel:

    8:56:24 am 25.1.2011
    

    steht:

    8:56:24 am 25.0.2011
    

    wie ihr dem source-code unten entnehmen könnt, veränder ich den wert von
    tm_mon um 1... wieso gibt er mir trotzdem 0 aus?

    void setLogTime(FILE *error, int mode){
    
    	struct tm* lzeit;
    	time_t zeit;
    
    	time(&zeit);
    
    	lzeit = localtime(&zeit);
    
    	lzeit->tm_mon + = 1;
    
    	if(mode == START)
    		fprintf(error,"Log um %d:%d:%d am %d.%d.%d\n", lzeit->tm_hour, lzeit->tm_min, lzeit->tm_sec, lzeit->tm_mday, lzeit->tm_mon, lzeit->tm_year+1900);
    	else
    		if(mode == END)
    			fprintf(error,"Log End um %d:%d:%d am %d.%d.%d\n\n\n", lzeit->tm_hour, lzeit->tm_min, lzeit->tm_sec, lzeit->tm_mday, lzeit->tm_mon, lzeit->tm_year+1900);
    		else
    			fprintf(error,"End of Log Failed! --> setLogTime(FILE *error, int mode) -> mode isn´t right value!\n\n\n");
    }
    

    gruß
    ITEDVO



  • Geht das nicht einfacher?

    time_t rawtime;
      struct tm * timeinfo;
    
      time ( &rawtime );
      timeinfo = localtime ( &rawtime );
      printf ( "Current local time and date: %s", asctime (timeinfo) );
    

    Und muss es nicht bei dir += ohne Leerzeichen dazwischen sein?



  • Du schreibst lzeit->tm_mon + = 1;
    Es muss aber beim += ohne Leerzeichen sein.

    Warum nimmst du nicht strftime()?



  • itedvo schrieb:

    lzeit->tm_mon + = 1;
    

    Und das akzeptiert der Compiler?

    += muss man zusammenschreiben.



  • 😡 oh, gibts ja nich... tipp fehler meiner seits und nein, der compiler gibt
    nicht mal ne warnung aus... 😡

    gibts ja nich...

    [edit]: dennoch, es wird immer noch 0 ausgegeben... generell stimmt das datum
    nicht, so hat er als log nicht am 24.12.2010 das eigentliche datum ausgegeben,
    sondern den 24.11.2010... generell also um eins zurück...



  • Versuch doch mal

    fprintf(error,"Log um %2d:%02d:%02d am %02d.%02d.%d\n", lzeit->tm_hour, lzeit->tm_min, lzeit->tm_sec, lzeit->tm_mday, lzeit->tm_mon + 1, lzeit->tm_year+1900); 
                                                                                                                                        ^ DA +1
    

    Aber strftime() ist immer noch besser 🙂



  • Wenn du noch in der Designphase deiner Logdatei bist, empfehle ich dir, ein möglichst einfach auswertbares/sortierbares Datumsformat zu verwenden, z.B. statt

    8:56:24 am 25.1.2011
    

    besser

    2011.01.25 08:56:24
    


  • Dann aber nach der Norm mit - statt .

    2011-01-25 08:56:24
    

    Das ist eindeutig und gibt kein Durcheinander mit der Reihenfolge.



  • ah, ja nach der norm ist sicherlich ne gute idee...

    DirkB schrieb:

    Versuch doch mal

    fprintf(error,"Log um %2d:%02d:%02d am %02d.%02d.%d\n", lzeit->tm_hour, lzeit->tm_min, lzeit->tm_sec, lzeit->tm_mday, lzeit->tm_mon + 1, lzeit->tm_year+1900); 
                                                                                                                                        ^ DA +1
    

    hab ich auch schon versucht... er gibt mir noch immer 0 für den monat aus...


Anmelden zum Antworten