• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net(C#)实现功能强大的时间日期处理类完整实例

    本文实例讲述了asp.net(C#)实现功能强大的时间日期处理类。分享给大家供大家参考,具体如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    namespace MSCL
    {
      /// summary>
      /// 时间日期处理类
      /// /summary>
      public class DateTimeHelper
      {
        #region 返回本年有多少天
        /// summary>返回本年有多少天/summary>
        /// param name="iYear">年份/param>
        /// returns>本年的天数/returns>
        public static int GetDaysOfYear(int iYear)
        {
          int cnt = 0;
          if (IsRuYear(iYear))
          {
            //闰年多 1 天 即:2 月为 29 天
            cnt = 366;
          }
          else
          {
            //--非闰年少1天 即:2 月为 28 天
            cnt = 365;
          }
          return cnt;
        }
        #endregion
        #region 返回本年有多少天
        /// summary>本年有多少天/summary>
        /// param name="dt">日期/param>
        /// returns>本天在当年的天数/returns>
        public static int GetDaysOfYear(DateTime idt)
        {
          int n;
          //取得传入参数的年份部分,用来判断是否是闰年
          n = idt.Year;
          if (IsRuYear(n))
          {
            //闰年多 1 天 即:2 月为 29 天
            return 366;
          }
          else
          {
            //--非闰年少1天 即:2 月为 28 天
            return 365;
          }
        }
        #endregion
        #region 返回本月有多少天
        /// summary>本月有多少天/summary>
        /// param name="iYear">年/param>
        /// param name="Month">月/param>
        /// returns>天数/returns>
        public static int GetDaysOfMonth(int iYear, int Month)
        {
          int days = 0;
          switch (Month)
          {
            case 1:
              days = 31;
              break;
            case 2:
              if (IsRuYear(iYear))
              {
                //闰年多 1 天 即:2 月为 29 天
                days = 29;
              }
              else
              {
                //--非闰年少1天 即:2 月为 28 天
                days = 28;
              }
              break;
            case 3:
              days = 31;
              break;
            case 4:
              days = 30;
              break;
            case 5:
              days = 31;
              break;
            case 6:
              days = 30;
              break;
            case 7:
              days = 31;
              break;
            case 8:
              days = 31;
              break;
            case 9:
              days = 30;
              break;
            case 10:
              days = 31;
              break;
            case 11:
              days = 30;
              break;
            case 12:
              days = 31;
              break;
          }
          return days;
        }
        #endregion
        #region 返回本月有多少天
        /// summary>本月有多少天/summary>
        /// param name="dt">日期/param>
        /// returns>天数/returns>
        public static int GetDaysOfMonth(DateTime dt)
        {
          //--------------------------------//
          //--从dt中取得当前的年,月信息 --//
          //--------------------------------//
          int year, month, days = 0;
          year = dt.Year;
          month = dt.Month;
          //--利用年月信息,得到当前月的天数信息。
          switch (month)
          {
            case 1:
              days = 31;
              break;
            case 2:
              if (IsRuYear(year))
              {
                //闰年多 1 天 即:2 月为 29 天
                days = 29;
              }
              else
              {
                //--非闰年少1天 即:2 月为 28 天
                days = 28;
              }
              break;
            case 3:
              days = 31;
              break;
            case 4:
              days = 30;
              break;
            case 5:
              days = 31;
              break;
            case 6:
              days = 30;
              break;
            case 7:
              days = 31;
              break;
            case 8:
              days = 31;
              break;
            case 9:
              days = 30;
              break;
            case 10:
              days = 31;
              break;
            case 11:
              days = 30;
              break;
            case 12:
              days = 31;
              break;
          }
          return days;
        }
        #endregion
        #region 返回当前日期的星期名称
        /// summary>返回当前日期的星期名称/summary>
        /// param name="dt">日期/param>
        /// returns>星期名称/returns>
        public static string GetWeekNameOfDay(DateTime idt)
        {
          string dt, 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;
          }
          return week;
        }
        #endregion
        #region 返回当前日期的星期编号
        /// summary>返回当前日期的星期编号/summary>
        /// param name="dt">日期/param>
        /// returns>星期数字编号/returns>
        public static string GetWeekNumberOfDay(DateTime idt)
        {
          string dt, 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;
          }
          return week;
        }
        #endregion
        #region 判断当前日期所属的年份是否是闰年,私有函数
        /// summary>判断当前日期所属的年份是否是闰年,私有函数/summary>
        /// param name="dt">日期/param>
        /// returns>是闰年:True ,不是闰年:False/returns>
        private static bool IsRuYear(DateTime idt)
        {
          //形式参数为日期类型
          //例如:2003-12-12
          int n;
          n = idt.Year;
          if ((n % 400 == 0) || (n % 4 == 0  n % 100 != 0))
          {
            return true;
          }
          else
          {
            return false;
          }
        }
        #endregion
        #region 判断当前年份是否是闰年,私有函数
        /// summary>判断当前年份是否是闰年,私有函数/summary>
        /// param name="dt">年份/param>
        /// returns>是闰年:True ,不是闰年:False/returns>
        private static bool IsRuYear(int iYear)
        {
          //形式参数为年份
          //例如:2003
          int n;
          n = iYear;
          if ((n % 400 == 0) || (n % 4 == 0  n % 100 != 0))
          {
            return true;
          }
          else
          {
            return false;
          }
        }
        #endregion
        #region 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期
        /// summary>
        /// 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期。
        /// /summary>
        /// param name="strInput">输入字符串/param>
        /// returns>日期对象/returns>
        public static DateTime ConvertStringToDate(string strInput)
        {
          DateTime oDateTime;
          try
          {
            oDateTime = DateTime.Parse(strInput);
          }
          catch (Exception)
          {
            oDateTime = DateTime.Today;
          }
          return oDateTime;
        }
        #endregion
        #region 将日期对象转化为格式字符串
        /// summary>
        /// 将日期对象转化为格式字符串
        /// /summary>
        /// param name="oDateTime">日期对象/param>
        /// param name="strFormat">
        /// 格式:
        ///    "SHORTDATE"===短日期
        ///    "LONGDATE"==长日期
        ///    其它====自定义格式
        /// /param>
        /// returns>日期字符串/returns>
        public static string ConvertDateToString(DateTime oDateTime, string strFormat)
        {
          string strDate = "";
          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();
          }
          return strDate;
        }
        #endregion
        #region 判断是否为合法日期,必须大于1800年1月1日
        /// summary>
        /// 判断是否为合法日期,必须大于1800年1月1日
        /// /summary>
        /// param name="strDate">输入日期字符串/param>
        /// returns>True/False/returns>
        public static bool IsDateTime(string strDate)
        {
          try
          {
            DateTime oDate = DateTime.Parse(strDate);
            if (oDate.CompareTo(DateTime.Parse("1800-1-1")) > 0)
              return true;
            else
              return false;
          }
          catch (Exception)
          {
            return false;
          }
        }
        #endregion
        #region 获取两个日期之间的差值 可返回年 月 日 小时 分钟 秒
        /// summary>
        /// 获取两个日期之间的差值
        /// /summary>
        /// param name="howtocompare">比较的方式可为:year month day hour minute second/param>
        /// param name="startDate">开始日期/param>
        /// param name="endDate">结束日期/param>
        /// returns>时间差/returns>
        public static double DateDiff(string howtocompare, DateTime startDate, DateTime endDate)
        {
          double diff = 0;
          try
          {
            TimeSpan TS = new TimeSpan(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;
          }
          return diff;
        }
        #endregion
        #region 计算两个日期之间相差的工作日天数
        /// summary>
        /// 计算两个日期之间相差的工作日天数
        /// /summary>
        /// param name="dtStart">开始日期/param>
        /// param name="dtEnd">结束日期/param>
        /// param name="Flag">是否除去周六,周日/param>
        /// returns>Int/returns>
        public static int CalculateWorkingDays(DateTime dtStart, DateTime dtEnd, bool Flag)
        {
          int count = 0;
          for (DateTime dtTemp = dtStart; dtTemp  dtEnd; dtTemp = dtTemp.AddDays(1))
          {
            if (Flag)
            {
              if (dtTemp.DayOfWeek != DayOfWeek.Saturday  dtTemp.DayOfWeek != DayOfWeek.Sunday)
              {
                count++;
              }
            }
            else
            {
              count++;
            }
          }
          return count;
        }
        #endregion
      }
    }
    
    

    更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net操作json技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。

    希望本文所述对大家asp.net程序设计有所帮助。

    您可能感兴趣的文章:
    • C#实现String类型和json之间的相互转换功能示例
    • C#实现功能强大的中国农历日历操作类
    • C# 日历类功能的实例代码
    • c#保存窗口位置大小操作类(序列化和文件读写功能)
    • C#实现类似jQuery的方法连缀功能
    • C#中增强类功能的几种方式详解
    上一篇:asp.net使用Socket.Send发送信息及Socket.SendFile传输文件的方法
    下一篇:ASP.NET MVC中使用jQuery时的浏览器缓存问题详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net(C#)实现功能强大的时间日期处理类完整实例 asp.net,实现,功能,强,大的,