(转)C#中获得月份中的第一天和最后一天和判断闰年
原贴: http://www.cnblogs.com/name-lh/archive/2008/01/04/1025704.html
刚刚在查看RSS的时候,在 c-sharpcorner中发现这样一篇article,
Find the First and Last Days of the Month with C#
本来我是抱着研究一种数学算法的心理准备去看这篇文档的,却发现不是我想要的结果。
其实,这个老外有点过了。如果你想学习一种实现方式,你可以去看看他如何使用减法来实现查找一个月份中最早的一天和最后的一天的方式!但是,如果纯粹是使用.NET的函数库的话,下面的方式也许更加简单。
获取一个月份中最早的一天和最后的一天。在C#的DateTime类中,已经提供了现成的函数,下面分别用两个简单的函数表示:
{
//你见过不是从1号开始的月份么?没有
//那么,直接返回给调用者吧!
//良好的一个编程习惯就是你的代码让人家看了简单易懂
return Convert.ToDateTime(Year.ToString() + "-" + Month.ToString() + "-1");
}
private DateTime GetLastDayOfMonth(int Year, int Month)
{
//这里的关键就是 DateTime.DaysInMonth 获得一个月中的天数
int Days = DateTime.DaysInMonth(Year, Month);
return Convert.ToDateTime(Year.ToString() + "-" + Month.ToString() + "-" + Days.ToString());
}
在上面两个函数中,我没有写出前面作者那样更多的重载,相信读者您会自己根据需要自己实现的。而且,我也没有对输入参数进行校验,但我还是建议你对参数进行有效性校验一下!
DateTime类中还有一个 DateTime.IsLeapYear( int year) 的函数,用来判断一年是不是闰年,以后,你自己可不用去写什么4的倍数,100整除的判断闰年的方法了。
享受.NET吧!
---------------------------------------------------------
另一个: http://www.cnblogs.com/s021368/articles/1802015.html
/// <summary>
/// 取得某月的第一天
/// </summary>
/// <param name="datetime">要取得月份第一天的时间</param>
/// <returns></returns>
private DateTime FirstDayOfMonth(DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day);
}
/**//// <summary>
/// 取得某月的最后一天
/// </summary>
/// <param name="datetime">要取得月份最后一天的时间</param>
/// <returns></returns>
private DateTime LastDayOfMonth(DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
}
/**//// <summary>
/// 取得上个月第一天
/// </summary>
/// <param name="datetime">要取得上个月第一天的当前时间</param>
/// <returns></returns>
private DateTime FirstDayOfPreviousMonth(DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day).AddMonths(-1);
}
/**//// <summary>
/// 取得上个月的最后一天
/// </summary>
/// <param name="datetime">要取得上个月最后一天的当前时间</param>
/// <returns></returns>
private DateTime LastDayOfPrdviousMonth(DateTime datetime)
{
return datetime.AddDays(1 - datetime.Day).AddDays(-1);
}
http://www.cn-web.com/shtml/article/net/csharp/2009/02/04/366.shtml
=================================================
.Net中获取一周第一天、最后一天,一月第一天、最后一天
DateTime dt = DateTime.Now;
//本月第一天时间
DateTime dt_First = dt.AddDays(-(dt.Day) + 1);
Label1.Text = dt_First.ToString("yyyy-MM-dd");
//将本月月数+1
DateTime dt2 = dt.AddMonths(1);
//本月最后一天时间
DateTime dt_Last = dt2.AddDays(-(dt.Day));
Label2.Text = dt_Last.ToString("yyyy-MM-dd");
int weeknow = Convert.ToInt32(System.DateTime.Now.DayOfWeek);
int daydiff = (-1) * weeknow + 1;
int dayadd = 7 - weeknow;
//本周第一天
lblBegin.Text = System.DateTime.Now.AddDays(daydiff).ToString("yyyy-MM-dd");
lblEnd.Text = System.DateTime.Now.AddDays(dayadd).ToString("yyyy-MM-dd");
-----------------------------------------------------------
JS版: http://www.cnblogs.com/wangsj/archive/2010/02/14/1668288.html
<script language="javascript">
2 function selDate(y, m)
3 {
4 //输出当月1号字符串
5 document.form1.startDT.value=y+"-"+m+"-1";
6 //计算下个月的年份(y)、月份值(m)
7 if(m==12)
8 {
9 y++;
10 m=1;
11 }
12 else
13 {
14 m++;
15 }
16 //生成下个月1日的Date值
17 var dt=new Date(y, m-1, 1); //月份值0--11
18 //一天差值=86400000,将下月1日转换成数值,再相减,得上月最后一天Date值
19 var n=Date.parse(dt);
20 n -= 86400000;
21 var dt1=new Date(n);
22 //输出当月最后一天日期字符串
23 document.form1.stopDT.value=dt1.getYear()+"-"+(dt1.getMonth()+1)+"-"+dt1.getDate();
24 }
25 </script>