How to parse a string in a datetime structure in C?

I would like a string (char *) to parse into a tm structure in C. Is there a built-in function to do this?

I mean ANSI C in the C99 standard.

+2


a source to share


2 answers


While POSIX does strptime()

, I don't believe there is a way to do this in standard C.



+6


a source


There is a function called strptime () available in time.h on UNIX derivatives. It is used in a similar way scanf()

.

You can just use a call scanf()

if you know what format the date will be in.

those.



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 am not aware of any C99 char *

to struct tm

.

+6


a source







All Articles