Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
334 views
in Technique[技术] by (71.8m points)

c99 - How to parse a string into a datetime struct in C?

I would like to have a string (char*) parsed into a tm struct in C. Is there any built-in function to do that?

I am referring to ANSI C in C99 Standard.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There is a function called strptime() available in time.h in UNIX derived systems. It is used similar to scanf().

You could just use a scanf() call if you know what format the date is going to be in.

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

Other than that, I'm not aware of any C99 char * to struct tm functions.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...