C语言 计算时间差
1 #include <stdio.h> 2 #include <time.h> 3 4 //日期格式转时间戳 5 time_t get_timestamp(char* time_str) 6 { 7 struct tm tm;//时间结构体 8 time_t timestamp;//时间类型,表示1970.01.01到特定日期的秒数 9 int a;//sscanf的返回值,不给返回值会警告 10 a = sscanf(time_str, "%d-%d-%d %d:%d:%d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);//将数据写入结构体 11 printf("%d-%d-%d %d:%d:%d\n", tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);//打印结构体 12 //与时间戳相对应的时间结构体中tm_year的值从1900开始,tm_mon的取值范围是[0,11],故转时间戳前要将实际年份减去1900,实际月份减去1,之后才能转成正确的时间戳 13 tm.tm_year -= 1900; 14 tm.tm_mon -= 1; 15 timestamp = mktime(&tm);//转时间戳 16 return timestamp; 17 } 18 int main() 19 { 20 char time_str[20] = { '\0' }; 21 time_t start_time, end_time; 22 double diff; 23 strcpy(time_str, "2020-12-18 23:21:20");//字符串变量赋值 24 start_time = get_timestamp(time_str);//获取时间戳 25 strcpy(time_str, "2020-12-19 07:41:02"); 26 end_time = get_timestamp(time_str); 27 diff = difftime(end_time, start_time);//获取时间差,单位为秒 28 printf("时间差:%d分钟\n", (int)diff / 60);//打印时间差分钟数 29 return 0; 30 }
结果:
2020-12-18 23:21:20
2020-12-19 7:41:2
时间差:499分钟