本月第一天
DateTime firstDay = DateTime.Today.AddDays(1 - DateTime.Today.Day);
本月最後一天
DateTime lastDay = DateTime.Today.AddDays(1 - DateTime.Today.Day).AddMonths(1).AddDays(-1);
原理解析
DateTime.Today.Day 獲取當前日 (1-31)
AddDays(1 - Day) 回退到 1 號 00:00:00
AddMonths(1) 進入下月 1 號
AddDays(-1) 退回上月最後一天 23:59:59.999
擴展:獲取任意月首尾
public (DateTime First, DateTime Last) GetMonthRange(int year, int month) {
DateTime first = new DateTime(year, month, 1);
DateTime last = first.AddMonths(1).AddDays(-1);
return (first, last);
}