我想将一个字符串(char *)解析为C中的tm结构。是否有内置函数可以做到这一点?
我指的是C99标准中的ANSI C.
答案 0 :(得分:6)
在UNIX派生系统中,time.h中有一个名为strptime()的函数。它的使用类似于scanf()
。
如果您知道日期的格式,可以使用scanf()
来电。
即
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
函数。
答案 1 :(得分:6)
虽然POSIX有strptime()
,但我认为在标准C中没有办法做到这一点。