问题:
dotNet中,如何方便快速的取得指定日期所在月份的最后一天?
思路:
从指定日期所在月份下个月的1号的前一天,就是所求的内容。
实现:
int GetLastDayOfMonth(DateTime dt)
{
DateTime dtNew = new DateTime(dt.Year, dt.Month, 1);
int iLastDay = dtNew.AddMonths(1).AddDays(-1).Day;
return iLastDay;
}
测试:
1 private void button1_Click(object sender, EventArgs e)
2 {
3 List<DateTime> lstDt = new List<DateTime>();
4 lstDt.Add(new DateTime(2000, 1, 1));
5 lstDt.Add(new DateTime(2012, 2, 29));
6 lstDt.Add(new DateTime(2011, 2, 2));
7 lstDt.Add(new DateTime(2013, 2, 2));
8 lstDt.Add(new DateTime(2013, 3, 31));
9 lstDt.Add(new DateTime(2013, 4, 5));
10 lstDt.Add(new DateTime(2013, 5, 7));
11 lstDt.Add(new DateTime(2013, 6, 7));
12 lstDt.Add(new DateTime(2013, 7, 7));
13 lstDt.Add(new DateTime(2013, 8, 7));
14 lstDt.Add(new DateTime(2013, 9, 7));
15 lstDt.Add(new DateTime(2013, 10, 7));
16 lstDt.Add(new DateTime(2013, 11, 7));
17 lstDt.Add(new DateTime(2011, 12, 23));
18 foreach (DateTime dt in lstDt)
19 {
20 Console.WriteLine(dt.ToString() + "==>" + GetLastDayOfMonth(dt));
21 }
22 }
结果:
2000/1/1 0:00:00==>31 2012/2/29 0:00:00==>29 2011/2/2 0:00:00==>28 2013/2/2 0:00:00==>28 2013/3/31 0:00:00==>31 2013/4/5 0:00:00==>30 2013/5/7 0:00:00==>31 2013/6/7 0:00:00==>30 2013/7/7 0:00:00==>31 2013/8/7 0:00:00==>31 2013/9/7 0:00:00==>30 2013/10/7 0:00:00==>31 2013/11/7 0:00:00==>30 2011/12/23 0:00:00==>31