您好我的Excel应用程序我希望转换许多值并验证它。但在转换double和dateTime的同时,我面临着一些严重的问题。以下代码片段适用于英语文化。但是当文化是德语时,我得到的文字是24.3.2014。现在它被转换为double并返回一个double值,但我不希望它被转换为double。有任何建议。?
string Text= "24.03.2014";
CultureInfo ci = CultureInfo.CreateSpecificCulture("de-DE");
var numberformat = ci.NumberFormat;
double d;
DateTime date;
if (double.TryParse(Text, NumberStyles.Any, numberformat, out d))
{
Console.WriteLine(d); //prints 24032014.0
}
else if (DateTime.TryParse(Text, numberformat, DateTimeStyles.None, out date))
{
Console.WriteLine(date);
}
答案 0 :(得分:0)
德语.
是 NumberGroupSeparator 而不是 NumberDecimalSeparator ,如英文。它类似于使用 en 文化解析24,03,2014
加倍,这也会给24032014
请参阅:
var culture = CultureInfo.GetCultureInfo("en-US");
Console.WriteLine(culture.NumberFormat.NumberDecimalSeparator + " " + culture.NumberFormat.NumberGroupSeparator);
culture = CultureInfo.GetCultureInfo("de-DE");
Console.WriteLine(culture.NumberFormat.NumberDecimalSeparator + " " + culture.NumberFormat.NumberGroupSeparator);
因此,如果您尝试在双倍代码之前解析DateTime。
CultureInfo ci = CultureInfo.CreateSpecificCulture("de-DE");
var numberformat = ci.NumberFormat;
double d;
DateTime date;
if (DateTime.TryParse(Text, numberformat, DateTimeStyles.None, out date))
{
Console.WriteLine(date);
}
else if (double.TryParse(Text, NumberStyles.Any, numberformat, out d))
{
Console.WriteLine(d);
}