char to time_t



  • Hi, ich habe ein problem und zwar bekomme ich wie gewünscht die daten aus meiner SQL Datenbank in TIMESTAMP- Format als char-Zeiger. Nun muss ich aber um mit difftime() arbeten zu können diesen in time_t umwandeln, dch habe ich keine Ahnung wie ich das anstellen soll.

    Danke für Antwort



  • time_t_var = strtoul(string, NULL, 0);



  • Danke für die Idee, aber leider geht es damit nicht. ich habe es mit nem Kollegen rausbekommen, hier für die die das selbe Problem haben:

    char * string;
    
    	times = strdup(string);
    	times[4]=0;
    	times[7]=0;
    	times[10]=0;
    	times[13]=0;
    	times[16]=0;
    
    	test.tm_year = atoi(times)-1900;
    	test.tm_mon = atoi(times+5)-1;
            test.tm_mday = atoi(times+8);		
            test.tm_hour = atoi(times+11);
    	test.tm_min = atoi(times+14);
    	test.tm_sec = atoi(times+17);		
    	test.tm_isdst = 0;
    
    	t = mktime(&test);
    


  • Wie sieht denn der TIMESTAMP String aus O_o

    strtoul funktioniert einwandfrei, wenn man nen Unix-Timestamp hat wie 1126192153.. Nur das kann man mit strtoul in ein time_t umwandeln. Wenn du da jetzt "05/06/07 03:05" hast, gehts natürlich nicht ...



  • naja er sieht immer wie folgendermassen aus:

    2005-08-08 15:40:43

    das gibt mir die SQL Datenbank zurück 🙂



  • Hi,

    sowas musst du aber auch sagen. Das was du da zurück bekommst ist kein timestamp. Das ist die stringrepräsentation eine date-time-feldes.
    Für sowas gibt es strptime, wobei ich nicht weiss ob das standard ist.

    struct tm stm;
    
    strptime(dtfield,"%Y-%m-%d %T",&stm)
    
    /* wenn du dann time_t brauchst nimmst mktime */
    


  • das ist timestamp ^^, so steht es auch in der datenbank, und als datentyp steht timestamp, bei SQl sah das bis jetzt bei mir immer so aus.

    mfg


Anmelden zum Antworten