Как разобрать строку в структуру datetime в C? - PullRequest
2 голосов
/ 27 апреля 2010

Я бы хотел, чтобы строка (char *) анализировалась в структуре tm в C. Есть ли встроенная функция для этого?

Я имею в виду ANSI C в стандарте C99.

Ответы [ 2 ]

6 голосов
/ 27 апреля 2010

Хотя POSIX имеет strptime(), я не верю, что есть способ сделать это в стандартном C.

6 голосов
/ 27 апреля 2010

Существует функция с именем strptime () , доступная в time.h в производных системах UNIX. Используется аналогично 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.

...