asp.net(C#)实现功能强大的时间日期处理类完整实例
本文实例讲述了asp.net(C#)实现功能强大的时间日期处理类。分享给大家供大家参考,具体如下:
usingSystem; usingSystem.Data; usingSystem.Configuration; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; usingSystem.Web.UI.WebControls.WebParts; usingSystem.Web.UI.HtmlControls; namespaceMSCL { ///<summary> ///时间日期处理类 ///</summary> publicclassDateTimeHelper { #region返回本年有多少天 ///<summary>返回本年有多少天</summary> ///<paramname="iYear">年份</param> ///<returns>本年的天数</returns> publicstaticintGetDaysOfYear(intiYear) { intcnt=0; if(IsRuYear(iYear)) { //闰年多1天即:2月为29天 cnt=366; } else { //--非闰年少1天即:2月为28天 cnt=365; } returncnt; } #endregion #region返回本年有多少天 ///<summary>本年有多少天</summary> ///<paramname="dt">日期</param> ///<returns>本天在当年的天数</returns> publicstaticintGetDaysOfYear(DateTimeidt) { intn; //取得传入参数的年份部分,用来判断是否是闰年 n=idt.Year; if(IsRuYear(n)) { //闰年多1天即:2月为29天 return366; } else { //--非闰年少1天即:2月为28天 return365; } } #endregion #region返回本月有多少天 ///<summary>本月有多少天</summary> ///<paramname="iYear">年</param> ///<paramname="Month">月</param> ///<returns>天数</returns> publicstaticintGetDaysOfMonth(intiYear,intMonth) { intdays=0; switch(Month) { case1: days=31; break; case2: if(IsRuYear(iYear)) { //闰年多1天即:2月为29天 days=29; } else { //--非闰年少1天即:2月为28天 days=28; } break; case3: days=31; break; case4: days=30; break; case5: days=31; break; case6: days=30; break; case7: days=31; break; case8: days=31; break; case9: days=30; break; case10: days=31; break; case11: days=30; break; case12: days=31; break; } returndays; } #endregion #region返回本月有多少天 ///<summary>本月有多少天</summary> ///<paramname="dt">日期</param> ///<returns>天数</returns> publicstaticintGetDaysOfMonth(DateTimedt) { //--------------------------------// //--从dt中取得当前的年,月信息--// //--------------------------------// intyear,month,days=0; year=dt.Year; month=dt.Month; //--利用年月信息,得到当前月的天数信息。 switch(month) { case1: days=31; break; case2: if(IsRuYear(year)) { //闰年多1天即:2月为29天 days=29; } else { //--非闰年少1天即:2月为28天 days=28; } break; case3: days=31; break; case4: days=30; break; case5: days=31; break; case6: days=30; break; case7: days=31; break; case8: days=31; break; case9: days=30; break; case10: days=31; break; case11: days=30; break; case12: days=31; break; } returndays; } #endregion #region返回当前日期的星期名称 ///<summary>返回当前日期的星期名称</summary> ///<paramname="dt">日期</param> ///<returns>星期名称</returns> publicstaticstringGetWeekNameOfDay(DateTimeidt) { stringdt,week=""; dt=idt.DayOfWeek.ToString(); switch(dt) { case"Mondy": week="星期一"; break; case"Tuesday": week="星期二"; break; case"Wednesday": week="星期三"; break; case"Thursday": week="星期四"; break; case"Friday": week="星期五"; break; case"Saturday": week="星期六"; break; case"Sunday": week="星期日"; break; } returnweek; } #endregion #region返回当前日期的星期编号 ///<summary>返回当前日期的星期编号</summary> ///<paramname="dt">日期</param> ///<returns>星期数字编号</returns> publicstaticstringGetWeekNumberOfDay(DateTimeidt) { stringdt,week=""; dt=idt.DayOfWeek.ToString(); switch(dt) { case"Mondy": week="1"; break; case"Tuesday": week="2"; break; case"Wednesday": week="3"; break; case"Thursday": week="4"; break; case"Friday": week="5"; break; case"Saturday": week="6"; break; case"Sunday": week="7"; break; } returnweek; } #endregion #region判断当前日期所属的年份是否是闰年,私有函数 ///<summary>判断当前日期所属的年份是否是闰年,私有函数</summary> ///<paramname="dt">日期</param> ///<returns>是闰年:True,不是闰年:False</returns> privatestaticboolIsRuYear(DateTimeidt) { //形式参数为日期类型 //例如:2003-12-12 intn; n=idt.Year; if((n%400==0)||(n%4==0&&n%100!=0)) { returntrue; } else { returnfalse; } } #endregion #region判断当前年份是否是闰年,私有函数 ///<summary>判断当前年份是否是闰年,私有函数</summary> ///<paramname="dt">年份</param> ///<returns>是闰年:True,不是闰年:False</returns> privatestaticboolIsRuYear(intiYear) { //形式参数为年份 //例如:2003 intn; n=iYear; if((n%400==0)||(n%4==0&&n%100!=0)) { returntrue; } else { returnfalse; } } #endregion #region将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期 ///<summary> ///将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期。 ///</summary> ///<paramname="strInput">输入字符串</param> ///<returns>日期对象</returns> publicstaticDateTimeConvertStringToDate(stringstrInput) { DateTimeoDateTime; try { oDateTime=DateTime.Parse(strInput); } catch(Exception) { oDateTime=DateTime.Today; } returnoDateTime; } #endregion #region将日期对象转化为格式字符串 ///<summary> ///将日期对象转化为格式字符串 ///</summary> ///<paramname="oDateTime">日期对象</param> ///<paramname="strFormat"> ///格式: ///"SHORTDATE"===短日期 ///"LONGDATE"==长日期 ///其它====自定义格式 ///</param> ///<returns>日期字符串</returns> publicstaticstringConvertDateToString(DateTimeoDateTime,stringstrFormat) { stringstrDate=""; try { switch(strFormat.ToUpper()) { case"SHORTDATE": strDate=oDateTime.ToShortDateString(); break; case"LONGDATE": strDate=oDateTime.ToLongDateString(); break; default: strDate=oDateTime.ToString(strFormat); break; } } catch(Exception) { strDate=oDateTime.ToShortDateString(); } returnstrDate; } #endregion #region判断是否为合法日期,必须大于1800年1月1日 ///<summary> ///判断是否为合法日期,必须大于1800年1月1日 ///</summary> ///<paramname="strDate">输入日期字符串</param> ///<returns>True/False</returns> publicstaticboolIsDateTime(stringstrDate) { try { DateTimeoDate=DateTime.Parse(strDate); if(oDate.CompareTo(DateTime.Parse("1800-1-1"))>0) returntrue; else returnfalse; } catch(Exception) { returnfalse; } } #endregion #region获取两个日期之间的差值可返回年月日小时分钟秒 ///<summary> ///获取两个日期之间的差值 ///</summary> ///<paramname="howtocompare">比较的方式可为:yearmonthdayhourminutesecond</param> ///<paramname="startDate">开始日期</param> ///<paramname="endDate">结束日期</param> ///<returns>时间差</returns> publicstaticdoubleDateDiff(stringhowtocompare,DateTimestartDate,DateTimeendDate) { doublediff=0; try { TimeSpanTS=newTimeSpan(endDate.Ticks-startDate.Ticks); switch(howtocompare.ToLower()) { case"year": diff=Convert.ToDouble(TS.TotalDays/365); break; case"month": diff=Convert.ToDouble((TS.TotalDays/365)*12); break; case"day": diff=Convert.ToDouble(TS.TotalDays); break; case"hour": diff=Convert.ToDouble(TS.TotalHours); break; case"minute": diff=Convert.ToDouble(TS.TotalMinutes); break; case"second": diff=Convert.ToDouble(TS.TotalSeconds); break; } } catch(Exception) { diff=0; } returndiff; } #endregion #region计算两个日期之间相差的工作日天数 ///<summary> ///计算两个日期之间相差的工作日天数 ///</summary> ///<paramname="dtStart">开始日期</param> ///<paramname="dtEnd">结束日期</param> ///<paramname="Flag">是否除去周六,周日</param> ///<returns>Int</returns> publicstaticintCalculateWorkingDays(DateTimedtStart,DateTimedtEnd,boolFlag) { intcount=0; for(DateTimedtTemp=dtStart;dtTemp<dtEnd;dtTemp=dtTemp.AddDays(1)) { if(Flag) { if(dtTemp.DayOfWeek!=DayOfWeek.Saturday&&dtTemp.DayOfWeek!=DayOfWeek.Sunday) { count++; } } else { count++; } } returncount; } #endregion } }
更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net操作json技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.netajax技巧总结专题》及《asp.net缓存操作技巧总结》。
希望本文所述对大家asp.net程序设计有所帮助。