2010-12-21 177 views
9

我想从字符串转换为DataTime,但发生错误。 我使用VS 2003,.NET Framework 1.1的不能隐式地将类型'字符串'转换为'System.DateTime'

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

不能键入 '串' 隐式转换为 'System.DateTime的'

任何一个可以帮助我我的语法如何解决错误。

+1

严格推荐你t o至少切换到“.NET 2.0”。你将需要VS 2005+。但是你可以使用免费的VS 2010,无论如何比VS 2003更好! – abatishchev 2010-12-21 10:32:46

回答

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 
} 
+0

+1'DateTime.TryParse' – 2010-12-21 10:26:28

5

我想你已经犯了一个错字Convert.ToString(s2)Convert.ToDateTime(s2)

+0

我收到一个异常mscorlib.dll中发生未处理的类型'System.FormatException'异常其他信息:字符串未被识别为有效的DateTime。 – happysmile 2010-12-21 10:22:23

+0

当从Change.ToString(s2)更改更改为Convert.ToDateTime(s2) – happysmile 2010-12-21 10:23:14

+0

您最好尝试使用DateTime.Parse()。这将免除一些错误。看起来像Convert()在2010年11月23日哭泣,它认为23是一个月。 – Pradeep 2010-12-21 10:26:08

2

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

4

您应该使用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); 
} 
+1

+1同意 – 2010-12-21 10:24:41

+0

1.'dt = new DataTime'; 2.'dt = DateTime.Parse';总数:多余的实例化 – abatishchev 2010-12-21 10:25:45

+0

@abatishchev - 很对。 – Oded 2010-12-21 10:27:23

1

DateTime.Parse("01/01 2010"); 或使用 DateTime.TryParse 如果你不知道它每次都会转换,即。并不总是一个日期,但有时候是空白的。

+0

+1同意 – 2010-12-21 10:25:12

3
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); 
-1

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

相关问题