Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从时间中减去字符指针\u t_C_Datetime_Pointers_Strptime - Fatal编程技术网

C 从时间中减去字符指针\u t

C 从时间中减去字符指针\u t,c,datetime,pointers,strptime,C,Datetime,Pointers,Strptime,我用字符指针表示日期和时间- char *connectTime = "2013-10-19 01:10:00"; 然后我获取了当前时间,即断开连接时间 time_t disconnectTime; disconnectTime = time(NULL); 现在,我想从断开连接时间中减去连接时间。我用谷歌搜索了一下,但没能实现。 请提供帮助。您可以使用将connectTime转换为struct tm,然后在后者上使用将其转换为time char * connectTime = "2013-1

我用字符指针表示日期和时间-

char *connectTime = "2013-10-19 01:10:00";
然后我获取了当前时间,即断开连接时间

time_t disconnectTime;
disconnectTime = time(NULL);
现在,我想从断开连接时间中减去连接时间。我用谷歌搜索了一下,但没能实现。 请提供帮助。

您可以使用将
connectTime
转换为
struct tm
,然后在后者上使用将其转换为
time

char * connectTime = "2013-10-19 01:10:00";
struct tm tmConnect = {0};
time_t timeConnect;
char * pc = strptime(connectTime, "%Y-%m-%d %H:%M:%S", &tmConnect);
if ((NULL == pc) || ('\0' != *(pc + strlen(connectTime))) /* The second condition assume connectTime does not hold any more characters after "... 01:10:00". */
{
  perror("strptime() failed");
  /* handle error */
}
else
{
  timeConnect = mktime(&tmConnect);
}
如in的评论所述,要计算秒数差异,请使用:

time_t disconnectTime;
disconnectTime = time(NULL);
double diff = difftime(disconnectTime, timeConnect);

你有的是一根绳子。您需要首先将其解析为
time\t
值。如何将其解析为time\t?这有帮助吗?请不要阅读真正的副本,因为此处以字符串格式给出的日期/时间应从
时间中减去。\u t
。对于时间差异/减法使用:感谢大家快速响应…当我使用与上面所写代码相同的代码时,我没有得到正确的差异。分钟不起作用,就像连接时间是“2013-10-19 01:10:00”一样。当我减去时,我得到的是“01:00:00”与“01:10:00”之间的差异,而不是tmConnect的“01:00:00”@user2794235:你是对的,在我的代码片段中传递到
strtime()
的格式有一个输入错误。我刚刚纠正了这一点。