DateTime.TryParse() 将德国日期转换为美国日期时出现问题
DateTime.TryParse() issue while converting German date to US date
目前我很难找到如何解决与 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,它假设有月份和 returns成功语句。
如果我传递德语日期“15.03.2016”,则一切正常。
我该如何解决这里的问题。
此处请求的语言环境是德语
谢谢
注意:提问者预计给定德语格式输入字符串的转换会失败。他只希望在输入字符串不是德语格式而是美国格式时转换成功。
使用 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");
}
目前我很难找到如何解决与 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,它假设有月份和 returns成功语句。
如果我传递德语日期“15.03.2016”,则一切正常。
我该如何解决这里的问题。
此处请求的语言环境是德语
谢谢
注意:提问者预计给定德语格式输入字符串的转换会失败。他只希望在输入字符串不是德语格式而是美国格式时转换成功。
使用 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");
}