文字列(char *)をCのtm構造体に解析してもらいたいのですが、それを行うための組み込み関数はありますか?
私はC99規格のANSICを参照しています。
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
。
POSIXにはstrptime()
ありますが、標準Cでこれを行う方法はないと思います。