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

C# DateTime 常用操作筆記:天數計算、格式化與區間重疊判斷

     編輯:關於C#

System.DateTime 是 .NET 處理日期時間的核心結構,本文整理開發中最常用的四大場景:取得月份天數、計算時間差、24 小時制格式化、判斷兩個時間區間是否重疊。

1. 取得某月總天數

int days = DateTime.DaysInMonth(2024, 2); // 2024 是閏年,回傳 29

2. 計算兩個 DateTime 的差異 (TimeSpan)

DateTime dt1 = new DateTime(2024, 1, 15, 10, 30, 0);
DateTime dt2 = new DateTime(2024, 1, 10, 8, 0, 0);

TimeSpan diff = dt1 - dt2; // dt1 較晚,結果為正

Console.WriteLine($"總天數:{diff.TotalDays:F2}");       // 5.104...
Console.WriteLine($"整數天數:{diff.Days}");             // 5
Console.WriteLine($"小時:{diff.Hours}");                 // 2
Console.WriteLine($"分鐘:{diff.Minutes}");               // 30
Console.WriteLine($"秒數:{diff.Seconds}");               // 0

// 若 dt1 < dt2,TotalDays 為負數,Days 為 -6 (向下取整)

提醒:Days 只回傳整數天數部分 (捨去小數),TotalDays 含小數完整天數。

3. 日期時間格式化:12/24 小時制陷阱

格式字串輸出範例說明
yyyy-MM-dd HH:mm:ss2024-01-15 14:30:0524 小時制 (大寫 HH)
yyyy-MM-dd hh:mm:ss2024-01-15 02:30:0512 小時制 (小寫 hh),需搭配 tt 顯示 AM/PM
yyyy-MM-dd HH:mm:ss.fff2024-01-15 14:30:05.123含毫秒
yyyy/MM/dd2024/01/15自訂分隔符
// DateTimePicker 設定 24 小時制
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy-MM-dd HH:mm:ss";

4. 判斷兩個時間區間是否重疊

區間 A:[AStart, AEnd],區間 B:[BStart, BEnd]。
重疊條件:AStart ≤ BEnd 且 AEnd ≥ BStart

bool IsOverlap(DateTime aStart, DateTime aEnd, DateTime bStart, DateTime bEnd)
{
    return aStart <= bEnd && aEnd >= bStart;
}

// 使用範例
var aStart = new DateTime(2024, 1, 1);
var aEnd   = new DateTime(2024, 1, 10);
var bStart = new DateTime(2024, 1, 5);
var bEnd   = new DateTime(2024, 1, 15);

bool overlap = IsOverlap(aStart, aEnd, bStart, bEnd); // true

此邏輯包含「端點相接」視為重疊;若需排除端點相接,將 <= 改為 <、>= 改為 >。

補充:常用靜態屬性與方法

  • DateTime.Now / DateTime.UtcNow — 本地/UTC 現在時間
  • DateTime.Today — 今天 00:00:00
  • DateTime.Parse / TryParse / ParseExact — 字串轉換
  • dt.AddDays(7)、dt.AddMonths(1)、dt.AddYears(-1) — 日期運算
  • dt.DayOfWeek — 取得星期幾 (列舉)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved