您可以通过几次调用来解决此问题尝试精确解析 https://msdn.microsoft.com/en-us/library/ms131044(v=vs.110).aspx:
public static DateTime ParseDate(string input)
{
DateTime result;
if (DateTime.TryParseExact(input, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;
if (DateTime.TryParseExact(input, "dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;
throw new FormatException();
}
快速测试一下:
public static void Main()
{
string[] tests = new string[] { "2018-06-29", "29-06-2018","Invalid" };
foreach (var t in tests)
{
var result = ParseDate(t);
Console.WriteLine( "Year: {0} Month: {1} Day: {2}", result.Year, result.Month, result.Day );
}
}
Output:
Year: 2018 Month: 6 Day: 29
Year: 2018 Month: 6 Day: 29
Run-time exception (line 18): One of the identified items was in an invalid format.
DotNetFiddle 上的示例代码 https://dotnetfiddle.net/xrfJil