![](/img/trans.png)
[英]Input string was not in a correct format on Convert.ToDouble(“Infinity”)
[英]Input string was not in a correct format. calling TimeSpan.FromSeconds(Convert.ToDouble(time)) in IE on Changing Culture
嗨我使用给定的下面的方法转换为字符串其工作精细铬,但在IE中它通过异常输入字符串不是正确的格式。 在这条线上
s = TimeSpan.FromSeconds(Convert.ToDouble(time));
这些是我传递给它的价值观
600, 298.8, 65505, 69, 70, 20.5, 20.5, 20.5, 20.5, 1840.4, 682, 1040.3
在Chrome中它的工作,但在IE中,当我将文化改为法语时,它会给出第二个值的例外,请帮助我解决问题
public static String ConvertTimeToString(this string time)
{
if (String.IsNullOrEmpty(time))
{
return time;
}
TimeSpan s;
if (time.IndexOf(':') >= 0)
{
s = TimeSpan.Parse(time);
}
else
{
s = TimeSpan.FromSeconds(Convert.ToDouble(time));
}
return s.ConvertTimeToString();
}
失败可能是在调用Convert.ToDouble
。 您的代码可能在CultureInfo中执行,其中包含','作为小数分隔符,但您的值使用'。'。 我建议你使用具有'。'的CultureInfo来使用Double.TryParse
。 作为小数分隔符:
Double value;
if (Double.TryParse(time, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out value))
{
s = TimeSpan.FromSeconds(value);
}
使用Convert.ToDouble(time)
时需要指定IFormatProvider
:
Convert.ToDouble(time, CultureInfo.InvariantCulture)
指定CulturInfo.InvariantCulture
指定一种文化,期望浮点写为1.234
(注意句点)。 问题的根源可能是您的time
格式为1,234
(请注意逗号)。 或者它可能是相反的:您没有指定IFormatProvider
和您当前的文化ASP.NET进程使用逗号作为小数分隔符,但提供的字符串使用句点?
如果使用的小数点不一致,您应该在源处修复它(不确定源是什么)或作为最后的手段,您可以按句点替换逗号:
Convert.ToDouble(time.Replace(",", ".") , CultureInfo.InvariantCulture)
但是,尝试解析字符串而不知道要发生什么并不是最好的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.