您好我使用下面给出的方法将其转换为字符串其工作精细铬,但在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();
}
答案 0 :(得分:1)
失败可能在电话Convert.ToDouble
中。您的代码可能在CultureInfo中执行,其中包含','作为小数分隔符,但您的值使用'。'。我建议您使用具有'。'的CultureInfo来使用Double.TryParse
。改为小数分隔符:
Double value;
if (Double.TryParse(time, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out value))
{
s = TimeSpan.FromSeconds(value);
}
答案 1 :(得分:1)
使用IFormatProvider
时需要指定Convert.ToDouble(time)
:
Convert.ToDouble(time, CultureInfo.InvariantCulture)
指定CulturInfo.InvariantCulture
指定将浮点写为1.234
的文化(请注意句点)。问题的根源可能是您time
的格式为1,234
(请注意逗号)。或者反过来说:你没有指定IFormatProvider
,你当前的文化ASP.NET进程使用逗号作为小数分隔符,但提供的字符串使用句点?
如果使用的小数点不一致,您应该在源处修复它(不确定源是什么)或作为最后的手段,您可以按句点替换逗号:
Convert.ToDouble(time.Replace(",", ".") , CultureInfo.InvariantCulture)
但是,尝试解析字符串而不知道期望什么并不是最好的事情。