文章提供一個自訂 getDays(DateTime, DateTime) 方法,嘗試以「每月 30 天」近似計算兩日期相差天數,分同年、跨年兩種情況處理。但此演算法忽略實際月份天數差異與閏年,精度有限。
(day2-day1) + (month2-month1)*30// 精確天數差 (含負值)
int days = (date2 - date1).Days;
// 僅正整數差
int absDays = Math.Abs((date2 - date1).Days);
TimeSpan.Days 已完整處理月份長度、閏年、時區等細節,效能優於自訂迴圈,程式碼更簡潔可讀。
僅在「業務規定每月固定 30 天計算利息/租金」等特殊會計規則下,才需自訂演算法;一般日期差請直接用 (date2 - date1).Days。