如果您可以使用标准日期格式,那么您应该使用其中一个限定符(在您的情况下,"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'? –