首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言日期差值計算邏輯錯誤:僅比較日/月/年分量不科學

     編輯:程式設計綜合問答

問題代碼邏輯


if (day > d1) day3 = day - d1;
else day3 = d1 - day;
// 僅比較「日」分量,忽略月份、年份進位

正確算法:轉時間戳相減


#include 

time_t birth = make_time(y1, m1, d1); // 自寫或 mktime
time_t now = time(NULL);
double diff_days = difftime(now, birth) / (3600 * 24);

手工實現思路(無庫)

    1. 判斷閏年。 2. 累加完整年天數。 3. 累加完整月天數(查表)。 4. 加上日差。 5. 注意起始/結束日期是否包含當天。

建議

「日期運算極易出錯,務必使用成熟庫(C 標準庫 time.h、C++ chrono、Java time、Python datetime),手寫僅作教學。」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved