C#驗證給定字符串形式日期是否合法的方法
本文實例講述了C#驗證給定字符串形式日期是否合法的方法。分享給大家供大家參考。具體分析如下:
這段C#代碼用于驗證日期的有效性,對于用戶輸入的不規(guī)則日期也作了簡單處理,比如用戶輸入了“今天”,則代碼會認(rèn)為用戶要返回的是今天的日期,另外可以對純數(shù)字的日期進行解析,比如:20130906
/// <summary>
/// 驗證日期是否合法,對不規(guī)則的作了簡單處理
/// </summary>
/// <param name="date">日期</param>
public static bool IsDate(ref string date)
{
//如果為空,認(rèn)為驗證合格
if (IsNullOrEmpty(date))
{
return true;
}
//清除要驗證字符串中的空格
date = date.Trim();
//替換\
date = date.Replace(@"\", "-");
//替換/
date = date.Replace(@"/", "-");
//如果查找到漢字"今",則認(rèn)為是當(dāng)前日期
if (date.IndexOf("今") != -1)
{
date = DateTime.Now.ToString();
}
try
{
//用轉(zhuǎn)換測試是否為規(guī)則的日期字符
date = Convert.ToDateTime(date).ToString("d");
return true;
}
catch
{
//如果日期字符串中存在非數(shù)字,則返回false
if (!IsInt(date))
{
return false;
}
#region 對純數(shù)字進行解析
//對8位純數(shù)字進行解析
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位純數(shù)字進行解析
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位純數(shù)字進行解析
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位純數(shù)字進行解析
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;
}
}
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
C#/VB.NET實現(xiàn)將Html轉(zhuǎn)為Word的示例詳解
本文分享以C#程序代碼為例,實現(xiàn)將Html文件轉(zhuǎn)換Word文檔的方法(附VB.NET代碼)。在實際轉(zhuǎn)換場景中可參考本文的方法,感興趣的可以了解一下2022-07-07
C# 中的IComparable和IComparer的使用及區(qū)別
這篇文章主要介紹了C# 中的IComparable和IComparer的使用及區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
C#基于Twain協(xié)議調(diào)用掃描儀,設(shè)置多圖像輸出模式(Multi image output)
這篇文章主要介紹了C#基于Twain協(xié)議調(diào)用掃描儀,設(shè)置多圖像輸出模式(Multi image output)的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01

