问题:

  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

 




posted on 2011-12-28 08:30  许伟  阅读(371)  评论(0编辑  收藏  举报