На просторах интернета видел такую функцию:
long CMine::ConvertDateTime(CString buff)
{
int yy, mm, dd, hour, min, sec;
struct tm when;
long tme;
sscanf(buff, "%d/%d/%d %d:%d:%d", &mm, &dd, &yy, &hour, &min, &sec);
if( yy < 70 ) yy+= 100; // year 2000 compliant
time(&tme);
when = *localtime(&tme);
when.tm_year = yy; when.tm_mon = mm-1; when.tm_mday = dd;
when.tm_hour = hour; when.tm_min = min; when.tm_sec = sec;
return( mktime(&when) );
}
Источник
Написано не совсем красиво, но суть примерно понятна.
Строка с датой и временем парсится через sscanf и из нее извлекаются числа. Если год меньше 70, то он относится к 21 веку и надо прибавить 100 лет (так как time_t начинается с 1 января 1970 года). Далее все это записываем в структуру tm и с помощью функции mktime преобразовываем в time_t. Минус данного способа — он не будет работать со строками, содержащими дату в некорректном формате.