问题描述
如何将字符串格式为 HH:MM:SS 的命令行参数转换为 time_t 类型? 我发现的唯一解决方案是针对 C++ 并将 time_t 转换为字符串,而不是在 C 中反过来。
谢谢。
编辑:我需要在没有 string.h 的情况下实现它
我正在尝试将命令行参数和字符串(例如“13:32:41”和“13:40:35”)转换为 time_t 格式,以便我可以使用 difftime(tm1,tm2) 来获取区别。
下面的方法可行吗?
time_t string_to_time(const char* time) {
struct tm tm = {0};
sscanf(time,"%H:%M:%S",&tm.tm_hour,&tm.tm_min,&tm.tm_sec);
time_t t=mktime(&tm);
return t;
}
解决方法
下面的方法可行吗?
是(对于有效输入)。它将返回自 1970/1/1 HH:MM:SS
起 1970/1/1 00:00:00
的秒数。
但我不明白这一点。真的很难写吗:
int hour,min,sec;
if (sscanf(time,"%d:%d:%d",&hour,&min,&sec) != 3) return -1;
return hour * 3600 + min * 60 + sec;
在 C 中将 time_t 转换为字符串,而不是相反。
我的第一个谷歌命中 How to convert a string variable containing time to time_t type in c++? 使用 strptime
确实是用于 C++。遗憾的是,strptime
不是 part of C time.h,它来自 linux 等可用的 POSIX strptime。对于窗户,请参见示例。 strptime() equivalent on Windows? .