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程序设计有所帮助。