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

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

/// <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;
}
}
时间: 2024-10-10 08:33:09

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

C# 验证给定的字符串是否为数字

用于验证给定的字符串是否为数字,不能用于验证负数,字符串中只能出现数字和小数点,否则认为不是数字,不验证数字的长度,也就是说, 给定的字符串再长,哪怕是1万个字符,也可以通过验证,所以通过验证的字符串不一定能转换成C#的int类型和Int64类型. /// <summary> /// 验证是否为数字 /// </summary> /// <param name="number">要验证的数字</param> public static b

JS 将字符串转换成日期类型

将字符串形式的日期转换成日期对象 var strTime="2011-04-16"; //字符串日期格式           var date= new Date(Date.parse(strTime.replace(/-/g,   "/"))); //转换成Data(); var month=date.getMonth()+1; //获取当前月份 -----------------------------------------------------------

采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址

采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license 检验项目. 使用truelicense实现用于JAVAprojectlicense机制(包含license生成和验证)请參考http://www.it165.net/pro/html/201404/11540.html 当中包含license授权机制的原理和制作license的详细步骤 本文主要是

MySQL字符串函数、日期时间函数

MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符

给定一个字符串类型表示的小数,输出其二进制表示

题目 给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 如果这个数无法精确地表示为二进制形式,输出”ERROR”. 解答 整数部分通过不断地对2取余然后除以2来得到其二进制表示, 或是不断地和1按位与然后除以2得到其二进制表示. 小数部分则通过不断地乘以2然后与1比较来得到其二进制表示. 小数部分转化为二进制,通过乘以2然后与1比较,大于等于1则该位为1,并且该值减去1: 否则该位为0.不断地通过这种操作最终能使该小数部分的值变为0的,即可精确表示. 否则将无法用有限的位数来

函数,字符串函数,日期函数,数学函数,系统函数,聚合函数

------------------字符串函数------------------------charindex(要查找的字符串,被查找的字符串,开始查找的位置):返回要查找的字符串在被查找的字符串中的位置select charindex('sve','hello sve hi sve',1)--结果为7select charindex('sve','hello sve hi sve',8)--结果为14--len(字符串):返回字符串的长度select len('hello sve')--lo

实例365(8)---------三种方法将字符串格式化为日期

一:DateTime.ParseExact方式,截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ConvertToString { public

【Java】比对两个以字符串形式表示的时期是否相差超过1天

数据库存放的日期,即使是以字符串表示的,你也可以利用<[Mysql]求出离最近相差X天的项,sql语句关于日期的比对>(点击打开链接)中所介绍的那个timestampdiff函数比对,日期是否相差超过一天. 如果在Java中要比对两个以字符串形式表示的日期是否相等, 比如比对两个以"yyyy-MM-dd HH:mm:ss"与字符串String形式表示的日期,是否相等 那可以先去除"-".":"." "空格,等东西,

C#中将字符串转换成日期的方式

一.拼接字符串的形式 DateTime dt=Convert.ToDateTime("20100101".Substring(0,4)+"-"+"20100101".Substring(4,2)+"-"+"20071107".Substring(6,2)); 二.Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss 三.Convert.T