字符串与日期混淆。 C#中的双重问题

时间:2014-04-07 10:41:11

标签: c# string datetime double type-conversion

我在C#中从字符串ToDouble进行简单转换,如图所示。 抛出的异常说明了日期时间转换,但字符串都不是日期,而是分配给的变量是DateTime变量。有人可以帮忙吗?

谢谢。

enter image description here

3 个答案:

答案 0 :(得分:1)

默认情况下,

System.Convert.ToDouble会将double.Parse与当前文化一起使用。如果您的小数点分隔符不是.,则可能会出现此异常。

由于智能感知只是试图帮助你,因此DateTime会产生误导。实际上它是一个数字,而不是DateTime。所以这不是你的错,但Visual-Studio团队可以改进这个消息。 FormatException的{​​{1}}媒体资源不包含Message

听起来你想要不变的文化:

DateTime

如果您不确定格式是否有效,则应使用double.TryParse

double d = double.Parse("0.0005", CultureInfo.InvariantCulture);

答案 1 :(得分:0)

转换取决于您所在的国家/地区和文化设置。

如果您所在的国家/地区不使用.作为小数点,则应使用CultureInfo.InvariantCulture作为转换的第二个参数。或者,您可以指定本地文化中的数字,但是当您将应用程序提供给在其PC上使用其他文化的人时,这很容易出现问题。

答案 2 :(得分:0)

不确定为什么会收到错误...但你尝试过这样的事吗?如果是这样,它会给出同样的错误吗?

即。 double.Parse默认使用当前文化。阅读of the answer posted by Mr Skeet in this SO post

string sVal ="0.0005"; 
double dVal = 0.0;

if (double.TryParse(sVal, out dVal))
{
    // Success !!
}
else
{
    // Could not convert
}