Подтвердить что ты не робот

Как преобразовать строковую переменную, содержащую время в тип time_t в С++?

У меня есть строковая переменная, содержащая время в hh: mm: ss format. Как преобразовать его в тип time_t? например: string time_details = "16:35:12"

Также, как сравнить две переменные, содержащие время, чтобы решить, что является самым ранним? например: string curr_time = "18:35:21"    string user_time = "22:45:31"

4b9b3361

Ответ 1

Вы можете использовать strptime(3) для анализа времени, а затем mktime(3), чтобы преобразовать его в time_t:

const char *time_details = "16:35:12";
struct tm tm;
strptime(time_details, "%H:%M:%S", &tm);
time_t t = mktime(&tm);  // t is now your desired time_t

Ответ 2

С С++ 11 вы можете сделать

struct std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = mktime(&tm);

см. std:: get_time и strftime для справки

Ответ 3

Это должно работать:

int hh, mm, ss;
struct tm when = {0};

sscanf_s(date, "%d:%d:%d", &hh, &mm, &ss);


when.tm_hour = hh;
when.tm_min = mm;
when.tm_sec = ss;

time_t converted;
converted = mktime(&when);

Измените при необходимости.