如何将字符串解析为C中的日期时间结构?

我想将一个字符串(char *)解析为C中的tm结构。是否有任何内置函数可以做到这一点?

我指的是C99标准中的ANSI C.

虽然POSIX有strptime() ,但我认为在标准C中没有办法做到这一点。

在UNIX派生系统中,time.h中有一个名为strptime()的函数。 它的使用类似于scanf()

如果您知道日期的格式,您可以使用scanf()调用。

IE

 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; } 

除此之外,我不知道任何C99 char *struct tm函数。