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.
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.
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.
While POSIX has strptime()
, I don't believe there is a way to do this in standard C.