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分鍾