C#驗(yàn)證給定字符串形式日期是否合法的方法
本文實(shí)例講述了C#驗(yàn)證給定字符串形式日期是否合法的方法。分享給大家供大家參考。具體分析如下:
這段C#代碼用于驗(yàn)證日期的有效性,對(duì)于用戶輸入的不規(guī)則日期也作了簡(jiǎn)單處理,比如用戶輸入了“今天”,則代碼會(huì)認(rèn)為用戶要返回的是今天的日期,另外可以對(duì)純數(shù)字的日期進(jìn)行解析,比如:20130906
/// <summary>
/// 驗(yàn)證日期是否合法,對(duì)不規(guī)則的作了簡(jiǎn)單處理
/// </summary>
/// <param name="date">日期</param>
public static bool IsDate(ref string date)
{
//如果為空,認(rèn)為驗(yàn)證合格
if (IsNullOrEmpty(date))
{
return true;
}
//清除要驗(yàn)證字符串中的空格
date = date.Trim();
//替換\
date = date.Replace(@"\", "-");
//替換/
date = date.Replace(@"/", "-");
//如果查找到漢字"今",則認(rèn)為是當(dāng)前日期
if (date.IndexOf("今") != -1)
{
date = DateTime.Now.ToString();
}
try
{
//用轉(zhuǎn)換測(cè)試是否為規(guī)則的日期字符
date = Convert.ToDateTime(date).ToString("d");
return true;
}
catch
{
//如果日期字符串中存在非數(shù)字,則返回false
if (!IsInt(date))
{
return false;
}
#region 對(duì)純數(shù)字進(jìn)行解析
//對(duì)8位純數(shù)字進(jìn)行解析
if (date.Length == 8)
{
//獲取年月日
string year = date.Substring(0, 4);
string month = date.Substring(4, 2);
string day = date.Substring(6, 2);
//驗(yàn)證合法性
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;
}
//對(duì)6位純數(shù)字進(jìn)行解析
if (date.Length == 6)
{
//獲取年月
string year = date.Substring(0, 4);
string month = date.Substring(4, 2);
//驗(yàn)證合法性
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;
}
//對(duì)5位純數(shù)字進(jìn)行解析
if (date.Length == 5)
{
//獲取年月
string year = date.Substring(0, 4);
string month = date.Substring(4, 1);
//驗(yàn)證合法性
if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
{
return false;
}
//拼接日期
date = year + "-" + month;
return true;
}
//對(duì)4位純數(shù)字進(jìn)行解析
if (date.Length == 4)
{
//獲取年
string year = date.Substring(0, 4);
//驗(yàn)證合法性
if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
{
return false;
}
//拼接日期
date = Convert.ToDateTime(year).ToString("d");
return true;
}
#endregion
return false;
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)將字符串轉(zhuǎn)換成日期格式的方法
- C#中判斷、驗(yàn)證字符串是否為日期格式的實(shí)現(xiàn)代碼
- C# string格式的日期時(shí)間字符串轉(zhuǎn)為DateTime類型的方法
- js和C# 時(shí)間日期格式轉(zhuǎn)換的簡(jiǎn)單實(shí)例
- C#轉(zhuǎn)換日期類型實(shí)例
- C#日期格式強(qiáng)制轉(zhuǎn)換方法(推薦)
- C#日期轉(zhuǎn)換函數(shù)分享
- C#實(shí)現(xiàn)日期格式轉(zhuǎn)換的公共方法類實(shí)例
- C#日期格式字符串的相互轉(zhuǎn)換操作實(shí)例分析
相關(guān)文章
C#中利用LINQ to XML與反射把任意類型的泛型集合轉(zhuǎn)換成XML格式字符串的方法
本文主要介紹了C#中利用LINQ to XML與反射把任意類型的泛型集合轉(zhuǎn)換成XML格式字符串的方法:利用反射,讀取一個(gè)類型的所有屬性,然后再把屬性轉(zhuǎn)換成XML元素的屬性或者子元素。下面注釋比較完整,需要的朋友可以看下2016-12-12
C#實(shí)現(xiàn)掃描局域網(wǎng)內(nèi)的所有IP和端口
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)掃描局域網(wǎng)內(nèi)的所有IP和端口的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
c# 獲取網(wǎng)頁(yè)中指定的字符串信息的實(shí)例代碼
c# 獲取網(wǎng)頁(yè)中指定的字符串信息的實(shí)例代碼,需要的朋友可以參考一下2013-04-04
使用C#實(shí)現(xiàn)自己封裝的Modbus工具類庫(kù)
Modbus通訊協(xié)議在工控行業(yè)的應(yīng)用是很多的,并且也是上位機(jī)開(kāi)發(fā)的基本技能之一,所以本文主要為大家介紹了如何使用C#封裝一個(gè)Modbus工具類庫(kù),需要的可以參考下2024-02-02
使用C# CefSharp Python采集某網(wǎng)站簡(jiǎn)歷并且自動(dòng)發(fā)送邀請(qǐng)短信的方法
這篇文章主要給大家介紹了關(guān)于如何使用C# CefSharp Python采集某網(wǎng)站簡(jiǎn)歷并且自動(dòng)發(fā)送邀請(qǐng)短信的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2019-03-03
解析如何正確使用SqlConnection的實(shí)現(xiàn)方法
本篇文章對(duì)如何正確使用SqlConnection的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法
下面小編就為大家分享一篇C#抓取網(wǎng)絡(luò)圖片保存到本地的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

