如果我正確理解您的方案,您正在設計一個應用程序,用戶可以在其中提供數據轉換的日期格式。你想確保日期格式本身是一個有效的.NET日期格式字符串。
如果是這樣的話,你需要做的是對測試使用DateTime.TryParseExact一個已知的日期值格式字符串,正如其他人所描述:
using System.Globalization; // For CultureInfo & DateTimeStyles
class MyClass
{
private bool IsValidDateFormatString(string userSuppliedFormat)
{
CultureInfo enUS = new CultureInfo("en-US");
DateTime testDate = new DateTime(2009, 10, 1, 12, 0, 0); // Noon on Oct 1st 2009
bool result;
result = DateTime.TryParseExact(userSuppliedFormat, enUS, DateTimeStyles.None, testDate);
return result;
}
}
這應該得到你想要的東西。如果必要的話,將其添加爲一個擴展方法:
using System.Globalization;
public static class MyClass
{
private bool IsValidDateFormat(this Date value)
{
CultureInfo enUS = new CultureInfo("en-US");
DateTime testDate = new DateTime(2009, 10, 1, 12, 0, 0); // Noon on Oct 1st 2009
bool result;
result = DateTime.TryParseExact(value, enUS, DateTimeStyles.None, testDate);
return result;
}
}
我不知道我會走那麼遠,但是,因爲它看起來像是你會做非常很少。
什麼應該算作'有效'的格式字符串? – 2009-10-07 13:29:32
任何在格式化時不會引起預期的東西。 – Naresh 2009-10-07 13:45:26
在Reflector中查看DateTime.ToString(string)的代碼顯示它調用一個'private'方法,它手動檢查格式字符串逐個字符並拋出異常。它看起來很複雜。 – Greg 2009-10-07 13:50:20