0

当我尝试转换为日期时间时出现以下错误。

字符串未被识别为有效的日期时间。

 cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012

然后我试试

    string date = string.Format("{0:yyyy-MM-dd}",c_date.Text);
    cost.b_date = DateTime.Parse(date) ;

但我得到了同样的例外,如何解决这个问题。

4

3 回答 3

2

string.Format输入是字符串时使用是没有意义的。

如果你知道字符串的格式,你应该使用DateTime.ParseExactor DateTime.TryParseExact。例如,对于您拥有的字符串,您可以使用:

DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy",
                                    CultureInfo.InvariantCulture);

你应该考虑:

  • 这是用户输入吗?如果是这样,请使用它TryParseExact来更轻松地检测用户错误,而不会出现异常。
  • 你肯定知道确切的格式吗?如果没有,使用DateTime.TryParse可能更合适。
  • 你确定了解文化吗?如果它不是当前线程的文化,您应该明确指定它。
  • 您是否必须将值作为文本开始?如果您可以使用另一种输入形式来为您提供值作为DateTime开始,那将是可取的。
于 2012-12-30T10:29:24.120 回答
2
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider);
于 2012-12-30T10:29:57.567 回答
1

尝试使用 DateTime.ParseExact。

DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null);
于 2012-12-30T10:29:56.260 回答