45

hh:mm:ss 形式の時間を含む文字列変数があります。time_t 型に変換するには?例: string time_details = "16:35:12"

また、時間を含む 2 つの変数を比較して、どちらが早いかを判断するにはどうすればよいでしょうか? 例: string curr_time = "18:35:21" string user_time = "22:45:31"

4

4 に答える 4

65

C++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_timestrftimeを参照してください

于 2014-07-30T12:37:57.963 に答える
61

を使用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
于 2012-06-26T18:22:52.263 に答える
18

これはうまくいくはずです:

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

必要に応じて変更します。

于 2012-06-26T18:12:52.283 に答える