Fehler bei time()



  • Hallo,
    ich möchte ein Datum + Uhrzeit in eine Zahl umwandeln. Ich benutzte VS2008.

    #include <time.h>
    
    //Eingabe: 21.03.200512:00:00
    int dateTime2Int( char *date, char *time)
    {
      int iRet = 0;
      time_t rawtime;
      struct tm * timeinfo;
      int jahr, monat , tag, stunde, minute, sekunde;
      char temp[10];
    
      //Datum einlesen
      if( strnlen(date,12) != 10)
        return -1;
      temp[0]=date[0];
      temp[1]=date[1];
      temp[2]= '\0';
      tag = atoi(temp);
      temp[0]=date[3];
      temp[1]=date[4];
      temp[2]= '\0';
      monat = atoi(temp);
      temp[0]=date[6];
      temp[1]=date[7];
      temp[2]=date[8];
      temp[3]=date[9];
      temp[4]= '\0';
      jahr = atoi(temp);
    
      //Zeit einlesen
      if( strnlen(time,12) != 8)
        return -2;
      temp[0]=time[10];
      temp[1]=time[11];
      temp[2]='\0';
      stunde = atoi(temp);
      temp[0]=time[13];
      temp[1]=time[14];
      temp[2]= '\0';
      minute = atoi(temp);
      temp[0]=time[16];
      temp[1]=time[17];
      temp[2]= '\0';
      sekunde = atoi(temp);
    
      time( &rawtime );
    
      timeinfo = localtime ( &rawtime );
      timeinfo->tm_year = jahr - 1900;
      timeinfo->tm_mon  = monat - 1;
      timeinfo->tm_mday = tag;
      timeinfo->tm_hour = stunde;
      timeinfo->tm_min = minute;
      timeinfo->tm_sec = sekunde;
    
      iRet = (int)mktime(timeinfo);
    
      return  iRet;
    }
    

    Leider funktioniert es irgendwie nicht, da folgende Fehler erscheint:

    error C2064: Ausdruck ergibt keine Funktion, die 1 Argumente übernimmt



  • char *time
    

    ist ein denkbar ungünstiger name für eine variable 😉



  • lol, das ist ja mal geil, danke.



  • Hier ist jetzt ein funktionierende Version:

    //Umwandeln eines Datums in eine Zahl(Sekunden seit einem bestimmten Datum: 
    //01.01.1970 00:00:00 Uhr Achtung Zeitzone + Sommer-Winterzeit beachten
    //Aufruf z.B.: dateTime2Int("01.01.1970", "02:00:03")
    int dateTime2Int( char *inDate, char *inTime)
    {
      int     iRet = 0;
      time_t  rawtime;
      struct tm * timeinfo;
      int     jahr, monat , tag, stunde, minute, sekunde;
      char    temp[10];
    
      //Datum einlesen
      if( strnlen(inDate,12) != 10)
        return -2;
      temp[0]=inDate[0];
      temp[1]=inDate[1];
      temp[2]= '\0';
      tag = atoi(temp);
      temp[0]=inDate[3];
      temp[1]=inDate[4];
      temp[2]= '\0';
      monat = atoi(temp);
      temp[0]=inDate[6];
      temp[1]=inDate[7];
      temp[2]=inDate[8];
      temp[3]=inDate[9];
      temp[4]= '\0';
      jahr = atoi(temp);
    
      //Zeit einlesen
      if( strnlen(inTime,12) != 8)
        return -3;
      temp[0]=inTime[0];
      temp[1]=inTime[1];
      temp[2]='\0';
      stunde = atoi(temp);
      temp[0]=inTime[3];
      temp[1]=inTime[4];
      temp[2]= '\0';
      minute = atoi(temp);
      temp[0]=inTime[6];
      temp[1]=inTime[7];
      temp[2]= '\0';
      sekunde = atoi(temp);
    
      printf("%d.%d.%d %d:%d:%d\n", tag, monat, jahr, stunde, minute, sekunde);
      time( &rawtime );
      timeinfo = localtime ( &rawtime );
      timeinfo->tm_year = jahr - 1900;
      timeinfo->tm_mon  = monat - 1;
      timeinfo->tm_mday = tag;
      timeinfo->tm_hour = stunde;
      timeinfo->tm_min  = minute;
      timeinfo->tm_sec  = sekunde;
    
      iRet = (int)mktime(timeinfo);
    
      return  iRet;
    }
    

Anmelden zum Antworten