Вы создали файл шаблона с указанием формата даты, который вы используете?
со страницы руководства:
Пользовательские шаблоны используются для анализа и интерпретации входной строки. Шаблоны представляют собой текстовые файлы, созданные пользователем и идентифицированные с помощью переменной среды DATEMSK.
Создайте файл, как timetemplate.txt:
%Y-%m-%d %H:%M:%S
Затем установите значение DATEMSK, чтобы указать на него:
export DATEMSK=/home/somebody/timetemplate.txt
Этот код работал для меня в OS X в сочетании с настройкой DATEMSK:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main (void)
{
char *time_str = "2011-07-20 17:30:18";
struct tm *time_tm = getdate(time_str);
time_t t = mktime(time_tm);
printf("str: %s and time: %s", time_str, ctime(&t));
return 0;
}