3

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

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

4

2 回答 2

11

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

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

于 2010-04-27T15:43:02.453 回答
6

虽然 POSIX 有strptime(),但我不相信在标准 C 中有办法做到这一点。

于 2010-04-27T15:44:00.573 回答