无法将类型'string'隐式转换为'System.DateTime'

时间:2010-12-21 10:19:52

标签: c# datetime

我正在尝试从字符串转换为DataTime但发生错误。 我使用的是VS 2003,.NET Framework 1.1

DateTime dt = Convert.ToDateTime("11/23/2010");
string s2 = dt.ToString("dd-MM-yyyy");
DateTime dtnew = Convert.ToString(s2);
  

无法将类型'string'隐式转换为'System.DateTime'

任何人都可以帮我解决错误的语法。

8 个答案:

答案 0 :(得分:12)

string input = "21-12-2010"; // dd-MM-yyyy    
DateTime d;
if (DateTime.TryParseExact(input, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out d))
{
    // use d
}

答案 1 :(得分:6)

我猜你错了 - 将Convert.ToString(s2)更改为Convert.ToDateTime(s2)

答案 2 :(得分:5)

您应该使用DateTime.ParseDateTime.ParseExact

DateTime dt= DateTime.Parse("11/23/2010");
string  s2=dt.ToString("dd-MM-yyyy");
DateTime dtnew = DateTime.Parse(s2);

两者都有TryXXX个变种需要传入out参数,但如果解析失败则不会抛出异常:

DateTime dt;
if(td = DateTime.TryParse("11/23/2010", out td))
{
  string  s2=dt.ToString("dd-MM-yyyy");
  DateTime dtnew = DateTime.Parse(s2);
}

答案 3 :(得分:4)

DateTime dtnew = Convert.ToString(s2);

问题是您将string s2再次转换为字符串并将其存储在DateTime variable

试试这个:

DateTime dt = Convert.ToDateTime("11/23/2010");
string  s2 = dt.ToString("dd-MM-yyyy");
DateTime dtnew = Convert.ToDateTime(s2);

答案 4 :(得分:2)

如果您需要指定格式,请尝试DateTime.Parse(...)DateTime.ParseExact(...)

答案 5 :(得分:1)

DateTime.Parse("01/01 2010"); 或使用 DateTime.TryParse 如果你不确定它每次转换,即。不总是约会,但有时候是空白。

答案 6 :(得分:0)

这对我有用。

DateTimeConverter c = new DateTimeConverter();
DateTime dt = (DateTime)c.ConvertFromString("2012-05-10");

DateTime dt2 = (DateTime)TypeDescriptor.GetConverter(dt).ConvertFrom("2012-05-21");

答案 7 :(得分:-2)

您需要将双引号("")更改为单引号(''