前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#验证给定的字符串形式的日期是否合法

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

原创
作者头像
用户7108768
修改2021-11-03 09:50:37
1.1K0
修改2021-11-03 09:50:37
举报

这段C#代码用于验证日期的有效性,对于用户输入的不规则日期也作了简单处理,比如用户输入了“今天”,则代码会认为用户要返回的是今天的日期,另外可以对纯数字的日期进行解析,比如:20130906

代码语言:javascript
复制
/// <summary>
        /// 验证日期是否合法,对不规则的作了简单处理
        /// </summary>
        /// <param name="date">日期</param>
        public static bool IsDate(ref string date)
        {
            //如果为空,认为验证合格
            if (IsNullOrEmpty(date))
            {
                return true;
            }

        //清除要验证字符串中的空格
        date = date.Trim();

        //替换\
        date = date.Replace(@"\", "-");
        //替换/
        date = date.Replace(@"/", "-");

        //如果查找到汉字"今",则认为是当前日期
        if (date.IndexOf("今") != -1)
        {
            date = DateTime.Now.ToString();
        }

        try
        {
            //用转换测试是否为规则的日期字符
            date = Convert.ToDateTime(date).ToString("d");
            return true;
        }
        catch
        {
            //如果日期字符串中存在非数字,则返回false
            if (!IsInt(date))
            {
                return false;
            }

            #region 对纯数字进行解析
            //对8位纯数字进行解析
            if (date.Length == 8)
            {
                //获取年月日
                string year = date.Substring(0, 4);
                string month = date.Substring(4, 2);
                string day = date.Substring(6, 2);

                //验证合法性
                if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
                {
                    return false;
                }
                if (Convert.ToInt32(month) > 12 || Convert.ToInt32(day) > 31)
                {
                    return false;
                }

                //拼接日期
                date = Convert.ToDateTime(year + "-" + month + "-" + day).ToString("d");
                return true;
            }

            //对6位纯数字进行解析
            if (date.Length == 6)
            {
                //获取年月
                string year = date.Substring(0, 4);
                string month = date.Substring(4, 2);

                //验证合法性
                if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
                {
                    return false;
                }
                if (Convert.ToInt32(month) > 12)
                {
                    return false;
                }

                //拼接日期
                date = Convert.ToDateTime(year + "-" + month).ToString("d");
                return true;
            }

            //对5位纯数字进行解析
            if (date.Length == 5)
            {
                //获取年月
                string year = date.Substring(0, 4);
                string month = date.Substring(4, 1);

                //验证合法性
                if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
                {
                    return false;
                }

                //拼接日期
                date = year + "-" + month;
                return true;
            }

            //对4位纯数字进行解析
            if (date.Length == 4)
            {
                //获取年
                string year = date.Substring(0, 4);

                //验证合法性
                if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
                {
                    return false;
                }

                //拼接日期
                date = Convert.ToDateTime(year).ToString("d");
                return true;
            }
            #endregion

            return false;
        }
    }</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档