如何将字符串解析为C中的datetime结构?

时间:2010-04-27 15:35:14

标签: c c99

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

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

2 个答案:

答案 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中没有办法做到这一点。