[C#] C#验证给定的字符串形式的日期是否合法 →→→→→进入此内容的聊天室

来自 , 2020-02-25, 写在 C#, 查看 151 次.
URL http://www.code666.cn/view/9e69af6c
  1. /// <summary>
  2.         /// 验证日期是否合法,对不规则的作了简单处理
  3.         /// </summary>
  4.         /// <param name="date">日期</param>
  5.         public static bool IsDate(ref string date)
  6.         {
  7.             //如果为空,认为验证合格
  8.             if (IsNullOrEmpty(date))
  9.             {
  10.                 return true;
  11.             }
  12.  
  13.             //清除要验证字符串中的空格
  14.             date = date.Trim();
  15.  
  16.             //替换\
  17.             date = date.Replace(@"\", "-");
  18.             //替换/
  19.             date = date.Replace(@"/", "-");
  20.  
  21.             //如果查找到汉字"今",则认为是当前日期
  22.             if (date.IndexOf("今") != -1)
  23.             {
  24.                 date = DateTime.Now.ToString();
  25.             }
  26.  
  27.             try
  28.             {
  29.                 //用转换测试是否为规则的日期字符
  30.                 date = Convert.ToDateTime(date).ToString("d");
  31.                 return true;
  32.             }
  33.             catch
  34.             {
  35.                 //如果日期字符串中存在非数字,则返回false
  36.                 if (!IsInt(date))
  37.                 {
  38.                     return false;
  39.                 }
  40.  
  41.                 #region 对纯数字进行解析
  42.                 //对8位纯数字进行解析
  43.                 if (date.Length == 8)
  44.                 {
  45.                     //获取年月日
  46.                     string year = date.Substring(0, 4);
  47.                     string month = date.Substring(4, 2);
  48.                     string day = date.Substring(6, 2);
  49.  
  50.                     //验证合法性
  51.                     if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
  52.                     {
  53.                         return false;
  54.                     }
  55.                     if (Convert.ToInt32(month) > 12 || Convert.ToInt32(day) > 31)
  56.                     {
  57.                         return false;
  58.                     }
  59.  
  60.                     //拼接日期
  61.                     date = Convert.ToDateTime(year + "-" + month + "-" + day).ToString("d");
  62.                     return true;
  63.                 }
  64.  
  65.                 //对6位纯数字进行解析
  66.                 if (date.Length == 6)
  67.                 {
  68.                     //获取年月
  69.                     string year = date.Substring(0, 4);
  70.                     string month = date.Substring(4, 2);
  71.  
  72.                     //验证合法性
  73.                     if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
  74.                     {
  75.                         return false;
  76.                     }
  77.                     if (Convert.ToInt32(month) > 12)
  78.                     {
  79.                         return false;
  80.                     }
  81.  
  82.                     //拼接日期
  83.                     date = Convert.ToDateTime(year + "-" + month).ToString("d");
  84.                     return true;
  85.                 }
  86.  
  87.                 //对5位纯数字进行解析
  88.                 if (date.Length == 5)
  89.                 {
  90.                     //获取年月
  91.                     string year = date.Substring(0, 4);
  92.                     string month = date.Substring(4, 1);
  93.  
  94.                     //验证合法性
  95.                     if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
  96.                     {
  97.                         return false;
  98.                     }
  99.  
  100.                     //拼接日期
  101.                     date = year + "-" + month;
  102.                     return true;
  103.                 }
  104.  
  105.                 //对4位纯数字进行解析
  106.                 if (date.Length == 4)
  107.                 {
  108.                     //获取年
  109.                     string year = date.Substring(0, 4);
  110.  
  111.                     //验证合法性
  112.                     if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
  113.                     {
  114.                         return false;
  115.                     }
  116.  
  117.                     //拼接日期
  118.                     date = Convert.ToDateTime(year).ToString("d");
  119.                     return true;
  120.                 }
  121.                 #endregion
  122.  
  123.                 return false;
  124.             }
  125.         }
  126. //csharp/8595

回复 "C#验证给定的字符串形式的日期是否合法"

这儿你可以回复上面这条便签

captcha