目前我很难找到如何解决与DateTime.TryPase函数相关的问题
String formattedDateString = String.Empty;
// German date dd.mm.yyyy
string dateString = "14.03.2016";
DateTimeFormatInfo dateTimeFormat = null;
//automatically throws and exception if the locale is not in the correct format
CultureInfo fromCulture = new CultureInfo("en-US");
DateTime tryParseDateTime;
//automatically throws and exception if the locale is not in the correct format
CultureInfo toCulture = new CultureInfo("de-de");
dateTimeFormat = toCulture.DateTimeFormat;
// expecting result to fail
if (DateTime.TryParse(dateString, fromCulture, DateTimeStyles.None, out tryParseDateTime))
{
formattedDateString = tryParseDateTime.ToString("d", dateTimeFormat);
Console.WriteLine("success");
}
else
{
Console.WriteLine("Failed");
}
所以在我的代码中,我发送德语格式日期即dd.mm.yyyy并期望DateTime.TryParse失败,但由于当天低于12,它假定有月份并返回成功语句。< / p>
如果我通过德国日期“15.03.2016”,这个工作正常。
我如何在这里解决我的问题。
此处请求的区域设置是德语
由于
答案 0 :(得分:3)
注意:提问者希望转换失败并使用给定的德语格式输入字符串。当输入字符串不是德语格式但是采用美国格式时,他只希望转换成功。
使用DateTime.TryParseExact
并传递源文化中的预期格式。
// German date dd.mm.yyyy
string dateString = "01.03.2016";
CultureInfo fromCulture = new CultureInfo("en-US");
DateTime tryParseDateTime;
// expecting result to fail
if (DateTime.TryParseExact(dateString, fromCulture.DateTimeFormat.ShortDatePattern, fromCulture, DateTimeStyles.None, out tryParseDateTime))
{
MessageBox.Show("Success");
}
else
{
MessageBox.Show("Failed");
}