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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM