首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 依兩日期計算天數:自訂演算法與內建替代方案

     編輯:ASP.NET 基礎

文章提供一個自訂 getDays(DateTime, DateTime) 方法,嘗試以「每月 30 天」近似計算兩日期相差天數,分同年、跨年兩種情況處理。但此演算法忽略實際月份天數差異與閏年,精度有限。

原始演算法邏輯

  • 同年:(day2-day1) + (month2-month1)*30
  • 跨年:拆解為「date1 到該年 12/31」與「次年 1/1 到 date2」兩段,同樣以 30 天/月估算

缺點分析

  • 1 月 31 日到 2 月 1 日 → 算出 30 天,實際僅 1 天
  • 閏年 2 月 29 日未處理
  • 跨年邏輯假設每年 360 天,誤差累積大

建議改用 .NET 內建

// 精確天數差 (含負值)
int days = (date2 - date1).Days;

// 僅正整數差
int absDays = Math.Abs((date2 - date1).Days);

TimeSpan.Days 已完整處理月份長度、閏年、時區等細節,效能優於自訂迴圈,程式碼更簡潔可讀。

適用情境

僅在「業務規定每月固定 30 天計算利息/租金」等特殊會計規則下,才需自訂演算法;一般日期差請直接用 (date2 - date1).Days。

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