2015-01-13 64 views
-1

我需要能夠從文本框驗證用戶輸入。不能使用日期選擇器,希望我可以,但這不是一個選項。唯一接受的格式年月日,爲1月13日辦20150113,2015年自定義日期fFormat驗證

起初,我想這可能工作,但事實並非如此:

CultureInfo provider = CultureInfo.InvariantCulture; 
var dateResult = DateTime.ParseExact(TextBox_SearchPolicyEffectiveDate.Text,"YYYYMMDD",provider); 

然後我試圖

DateTime dt = new DateTime(2015, 01, 13); 
String.Format("{O:yyyyMMdd}", TextBox_EffectiveDate.Text.Trim()); 

這沒」不管怎麼樣,但是我對於內部的東西感到困惑。這只是一個任意的數據,因爲它真的不想在那裏「硬編碼」我的日期。我也在尋找MSDN,但它沒有提供我可以使用的許多東西。我看到其他帖子,其中格式yyyyddmm被使用,所以我想我只是將'mm'換成'dd',但那也不起作用。

+3

在你的'ParseExact'調用中使用'yyyyMMdd'。 –

回答

1

奇怪的是,您在第二次嘗試時使用了正確的日期格式字符串,但您嘗試使用的日期格式字符串不同。無論如何...

你想要的格式是yyyyMMdd。請注意,區分大小寫在這裏非常重要。 mm用於分鐘。

如果你想驗證,那麼我會建議使用TryParseExact。事情是這樣的:

CultureInfo provider = CultureInfo.InvariantCulture; 
DateTime? dt = null; 
bool isValid = DateTime.TryParseExact(TextBox_SearchPolicyEffectiveDate.Text, "yyyyMMdd", provider, System.Globalization.DateTimeStyles.None, out dt); 

然後你可以檢查它是否是有效的,做你想做的,例如:

if(isValid) 
{ 
    // Valid so do something with the date value. 
    model.MyDate = dt.Value; 
} 
else 
{ 
    // Invalid so show an error message to the user. 
    MessageBox.Show("Date format is invalid", "Invalid Date", MessageBoxButtons.OK); 
} 

您還可以通過做檢查有效性:

if(dt.HasValue)...