【发布时间】:2011-02-12 22:28:18
【问题描述】:
我想在 C 中将一个字符串 (char*) 解析为一个 tm 结构。是否有任何内置函数可以做到这一点?
我指的是 C99 标准中的 ANSI C。
【问题讨论】:
我想在 C 中将一个字符串 (char*) 解析为一个 tm 结构。是否有任何内置函数可以做到这一点?
我指的是 C99 标准中的 ANSI C。
【问题讨论】:
在 UNIX 派生系统的 time.h 中有一个名为 strptime() 的函数。它的使用类似于scanf()。
如果您知道日期的格式,您可以直接使用scanf() 调用。
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;
}
除此之外,我不知道有任何 C99 char * 到 struct tm 函数。
【讨论】:
虽然 POSIX 有 strptime(),但我认为在标准 C 中没有办法做到这一点。
【讨论】: