如果您可以使用標準日期格式,那麼您應該使用其中一個限定符(在您的情況下,"d"
可能會有效)的DateTime.TryParseExact
。否則,你需要一個圍繞DateTime.TryParse
的自定義函數。
DateTime.TryParse
將嘗試通過忽略一些缺失的數據並在可能的地方填寫一些缺失數據(請參閱MSDN)來幫助您。如果你想使用當前的文化來解析它,但你仍然想排除TryParse認爲有效的特定字符串,你應該在運行嘗試解析之前排除它們。例如
public bool MyTryParse(string dateString, out DateTime dt)
{
dt = new DateTime();
if (dateString == null)
return false;
if (dateString.Length > 3)
return false;
return DateTime.TryParse(dateString, CultureInfo.CurrentCulture, DateTimeStyles.None, out dt);
}
您可以添加任何您想要的其他特殊情況測試。請注意,TryParseExact
可能不是您想要的,,除非您可以使用標準日期格式作爲指定的格式字符串(任何自定義的字符串將覆蓋CurrentCulture
可能指定的內容);比較例如下面的輸出:
DateTime dt;
bool res = DateTime.TryParseExact("02/03/2001", "MM/dd/yyyy", CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out dt);
Console.WriteLine(dt);
// will output Feb 3, 2001, but a user in GB would probably intend Mar 3, 2001
bool res = DateTime.TryParseExact("02/03/2001", "d", CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out dt);
Console.WriteLine(dt);
// will output Mar 3, 2001, but might be too restrictive for what you want?
res = DateTime.TryParse("02/03/2001", CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out dt);
Console.WriteLine(dt);
// will output Mar 2, 2001, but goes back to your original problem
'我該怎麼做TryParse方法返回False?' - 給它一個無效的字符串解析。 –
我猜想OP想要爲特定的字符串返回'False''「1,2」' –
這怎麼可能返回'true'? –