How to parse a string into a datetime struct in C?

前端 未结 2 718
春和景丽
春和景丽 2020-12-12 02:02

I would like to have a string (char*) parsed into a tm struct in C. Is there any built-in function to do that?

I am referring to ANSI C in C99 Standard.

2条回答
  •  悲&欢浪女
    2020-12-12 02:53

    There is a function called strptime() available in time.h in UNIX derived systems. It is used similar to scanf().

    You could just use a scanf() call if you know what format the date is going to be in.

    I.E.

    char *dateString = "2008-12-10";
    struct tm * parsedTime; 
    int year, month, day; 
    // ex: 2009-10-29 
    if(sscanf(dateString, "%d-%d-%d", &year, &month, &day) != EOF){ 
      time_t rawTime;
      time(&rawTime);
      parsedTime = localtime(&rawTime);
    
      // tm_year is years since 1900
      parsedTime->tm_year = year - 1900;
      // tm_months is months since january
      parsedTime->tm_mon = month - 1;
      parsedTime->tm_mday = day;
    }
    

    Other than that, I'm not aware of any C99 char * to struct tm functions.

提交回复
热议问题